1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/network-observability-flowcollector-api-specifications.adoc

3696 lines
94 KiB
Plaintext

// Automatically generated by 'openshift-apidocs-gen'. Do not edit.
:_mod-docs-content-type: REFERENCE
[id="network-observability-flowcollector-api-specifications_{context}"]
= FlowCollector API specifications
Description::
+
--
`FlowCollector` is the schema for the network flows collection API, which pilots and configures the underlying deployments.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `apiVersion`
| `string`
| APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and might reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
| `kind`
| `string`
| Kind is a string value representing the REST resource this object represents. Servers might 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
| `metadata`
| `object`
| Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
| `spec`
| `object`
| Defines the desired state of the FlowCollector resource.
+
+
*: the mention of "unsupported" or "deprecated" for a feature throughout this document means that this feature
is not officially supported by Red Hat. It might have been, for example, contributed by the community
and accepted without a formal agreement for maintenance. The product maintainers might provide some support
for these features as a best effort only.
|===
== .metadata
Description::
+
--
Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
--
Type::
`object`
== .spec
Description::
+
--
Defines the desired state of the FlowCollector resource.
+
+
*: the mention of "unsupported" or "deprecated" for a feature throughout this document means that this feature
is not officially supported by Red Hat. It might have been, for example, contributed by the community
and accepted without a formal agreement for maintenance. The product maintainers might provide some support
for these features as a best effort only.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `agent`
| `object`
| Agent configuration for flows extraction.
| `consolePlugin`
| `object`
| `consolePlugin` defines the settings related to the {product-title} Console plugin, when available.
| `deploymentModel`
| `string`
| `deploymentModel` defines the desired type of deployment for flow processing. Possible values are: +
- `Direct` (default) to make the flow processor listen directly from the agents. Only recommended on small clusters, below 15 nodes. +
- `Kafka` to make flows sent to a Kafka pipeline before consumption by the processor. +
Kafka can provide better scalability, resiliency, and high availability (for more details, see https://www.redhat.com/en/topics/integration/what-is-apache-kafka).
| `exporters`
| `array`
| `exporters` defines additional optional exporters for custom consumption or storage.
| `kafka`
| `object`
| Kafka configuration, allowing to use Kafka as a broker as part of the flow collection pipeline. Available when the `spec.deploymentModel` is `Kafka`.
| `loki`
| `object`
| `loki`, the flow store, client settings.
| `namespace`
| `string`
| Namespace where Network Observability pods are deployed.
| `networkPolicy`
| `object`
| `networkPolicy` defines network policy settings for Network Observability components isolation.
| `processor`
| `object`
| `processor` defines the settings of the component that receives the flows from the agent,
enriches them, generates metrics, and forwards them to the Loki persistence layer and/or any available exporter.
| `prometheus`
| `object`
| `prometheus` defines Prometheus settings, such as querier configuration used to fetch metrics from the Console plugin.
|===
== .spec.agent
Description::
+
--
Agent configuration for flows extraction.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `ebpf`
| `object`
| `ebpf` describes the settings related to the eBPF-based flow reporter when `spec.agent.type`
is set to `eBPF`.
| `type`
| `string`
| `type` [deprecated (*)] selects the flows tracing agent. Previously, this field allowed to select between `eBPF` or `IPFIX`.
Only `eBPF` is allowed now, so this field is deprecated and is planned for removal in a future version of the API.
|===
== .spec.agent.ebpf
Description::
+
--
`ebpf` describes the settings related to the eBPF-based flow reporter when `spec.agent.type`
is set to `eBPF`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `advanced`
| `object`
| `advanced` allows setting some aspects of the internal configuration of the eBPF agent.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk. You can also
override the default Linux capabilities from there.
| `cacheActiveTimeout`
| `string`
| `cacheActiveTimeout` is the max period during which the reporter aggregates flows before sending.
Increasing `cacheMaxFlows` and `cacheActiveTimeout` can decrease the network traffic overhead and the CPU load,
however you can expect higher memory consumption and an increased latency in the flow collection.
| `cacheMaxFlows`
| `integer`
| `cacheMaxFlows` is the max number of flows in an aggregate; when reached, the reporter sends the flows.
Increasing `cacheMaxFlows` and `cacheActiveTimeout` can decrease the network traffic overhead and the CPU load,
however you can expect higher memory consumption and an increased latency in the flow collection.
| `excludeInterfaces`
| `array (string)`
| `excludeInterfaces` contains the interface names that are excluded from flow tracing.
An entry enclosed by slashes, such as `/br-/`, is matched as a regular expression.
Otherwise it is matched as a case-sensitive string.
| `features`
| `array (string)`
| List of additional features to enable. They are all disabled by default. Enabling additional features might have performance impacts. Possible values are: +
- `PacketDrop`: Enable the packets drop flows logging feature. This feature requires mounting
the kernel debug filesystem, so the eBPF agent pods must run as privileged via `spec.agent.ebpf.privileged`. +
- `DNSTracking`: Enable the DNS tracking feature. +
- `FlowRTT`: Enable flow latency (sRTT) extraction in the eBPF agent from TCP traffic. +
- `NetworkEvents`: Enable the network events monitoring feature, such as correlating flows and network policies.
This feature requires mounting the kernel debug filesystem, so the eBPF agent pods must run as privileged via `spec.agent.ebpf.privileged`.
It requires using the OVN-Kubernetes network plugin with the Observability feature.
IMPORTANT: This feature is available as a Technology Preview. +
- `PacketTranslation`: Enable enriching flows with packet translation information, such as Service NAT. +
- `EbpfManager`: [Unsupported (*)]. Use eBPF Manager to manage Network Observability eBPF programs. Pre-requisite: the eBPF Manager operator (or upstream bpfman operator) must be installed. +
- `UDNMapping`: Enable interfaces mapping to User Defined Networks (UDN). +
This feature requires mounting the kernel debug filesystem, so the eBPF agent pods must run as privileged via `spec.agent.ebpf.privileged`.
It requires using the OVN-Kubernetes network plugin with the Observability feature. +
- `IPSec`, to track flows between nodes with IPsec encryption. +
| `flowFilter`
| `object`
| `flowFilter` defines the eBPF agent configuration regarding flow filtering.
| `imagePullPolicy`
| `string`
| `imagePullPolicy` is the Kubernetes pull policy for the image defined above
| `interfaces`
| `array (string)`
| `interfaces` contains the interface names from where flows are collected. If empty, the agent
fetches all the interfaces in the system, excepting the ones listed in `excludeInterfaces`.
An entry enclosed by slashes, such as `/br-/`, is matched as a regular expression.
Otherwise it is matched as a case-sensitive string.
| `kafkaBatchSize`
| `integer`
| `kafkaBatchSize` limits the maximum size of a request in bytes before being sent to a partition. Ignored when not using Kafka. Default: 1MB.
| `logLevel`
| `string`
| `logLevel` defines the log level for the Network Observability eBPF Agent
| `metrics`
| `object`
| `metrics` defines the eBPF agent configuration regarding metrics.
| `privileged`
| `boolean`
| Privileged mode for the eBPF Agent container. When set to `true`, the agent is able to capture more traffic, including from secondary interfaces.
When ignored or set to `false`, the operator sets granular capabilities (BPF, PERFMON, NET_ADMIN) to the container.
Some agent features require the privileged mode, such as packet drops tracking (see `features`) and SR-IOV support.
| `resources`
| `object`
| `resources` are the compute resources required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
| `sampling`
| `integer`
| Sampling interval of the eBPF probe. 100 means one packet on 100 is sent. 0 or 1 means all packets are sampled.
|===
== .spec.agent.ebpf.advanced
Description::
+
--
`advanced` allows setting some aspects of the internal configuration of the eBPF agent.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk. You can also
override the default Linux capabilities from there.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `capOverride`
| `array (string)`
| Linux capabilities override, when not running as privileged. Default capabilities are BPF, PERFMON and NET_ADMIN.
| `env`
| `object (string)`
| `env` allows passing custom environment variables to underlying components. Useful for passing
some very concrete performance-tuning options, such as `GOGC` and `GOMAXPROCS`, that should not be
publicly exposed as part of the FlowCollector descriptor, as they are only useful
in edge debug or support scenarios.
| `scheduling`
| `object`
| scheduling controls how the pods are scheduled on nodes.
|===
== .spec.agent.ebpf.advanced.scheduling
Description::
+
--
scheduling controls how the pods are scheduled on nodes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `affinity`
| `object`
| If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
| `nodeSelector`
| `object (string)`
| `nodeSelector` allows scheduling of pods only onto nodes that have each of the specified labels.
For documentation, refer to https://kubernetes.io/docs/concepts/configuration/assign-pod-node/.
| `priorityClassName`
| `string`
| If specified, indicates the pod's priority. For documentation, refer to https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#how-to-use-priority-and-preemption.
If not specified, default priority is used, or zero if there is no default.
| `tolerations`
| `array`
| `tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
|===
== .spec.agent.ebpf.advanced.scheduling.affinity
Description::
+
--
If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`object`
== .spec.agent.ebpf.advanced.scheduling.tolerations
Description::
+
--
`tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`array`
== .spec.agent.ebpf.flowFilter
Description::
+
--
`flowFilter` defines the eBPF agent configuration regarding flow filtering.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `action`
| `string`
| `action` defines the action to perform on the flows that match the filter. The available options are `Accept`, which is the default, and `Reject`.
| `cidr`
| `string`
| `cidr` defines the IP CIDR to filter flows by.
Examples: `10.10.10.0/24` or `100:100:100:100::/64`
| `destPorts`
| `integer-or-string`
| `destPorts` optionally defines the destination ports to filter flows by.
To filter a single port, set a single port as an integer value. For example, `destPorts: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `destPorts: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `direction`
| `string`
| `direction` optionally defines a direction to filter flows by. The available options are `Ingress` and `Egress`.
| `enable`
| `boolean`
| Set `enable` to `true` to enable the eBPF flow filtering feature.
| `icmpCode`
| `integer`
| `icmpCode`, for Internet Control Message Protocol (ICMP) traffic, optionally defines the ICMP code to filter flows by.
| `icmpType`
| `integer`
| `icmpType`, for ICMP traffic, optionally defines the ICMP type to filter flows by.
| `peerCIDR`
| `string`
| `peerCIDR` defines the Peer IP CIDR to filter flows by.
Examples: `10.10.10.0/24` or `100:100:100:100::/64`
| `peerIP`
| `string`
| `peerIP` optionally defines the remote IP address to filter flows by.
Example: `10.10.10.10`.
| `pktDrops`
| `boolean`
| `pktDrops` optionally filters only flows containing packet drops.
| `ports`
| `integer-or-string`
| `ports` optionally defines the ports to filter flows by. It is used both for source and destination ports.
To filter a single port, set a single port as an integer value. For example, `ports: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `ports: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `protocol`
| `string`
| `protocol` optionally defines a protocol to filter flows by. The available options are `TCP`, `UDP`, `ICMP`, `ICMPv6`, and `SCTP`.
| `rules`
| `array`
| `rules` defines a list of filtering rules on the eBPF Agents.
When filtering is enabled, by default, flows that don't match any rule are rejected.
To change the default, you can define a rule that accepts everything: `{ action: "Accept", cidr: "0.0.0.0/0" }`, and then refine with rejecting rules.
| `sampling`
| `integer`
| `sampling` is the sampling interval for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
| `sourcePorts`
| `integer-or-string`
| `sourcePorts` optionally defines the source ports to filter flows by.
To filter a single port, set a single port as an integer value. For example, `sourcePorts: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `sourcePorts: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `tcpFlags`
| `string`
| `tcpFlags` optionally defines TCP flags to filter flows by.
In addition to the standard flags (RFC-9293), you can also filter by one of the three following combinations: `SYN-ACK`, `FIN-ACK`, and `RST-ACK`.
|===
== .spec.agent.ebpf.flowFilter.rules
Description::
+
--
`rules` defines a list of filtering rules on the eBPF Agents.
When filtering is enabled, by default, flows that don't match any rule are rejected.
To change the default, you can define a rule that accepts everything: `{ action: "Accept", cidr: "0.0.0.0/0" }`, and then refine with rejecting rules.
--
Type::
`array`
== .spec.agent.ebpf.flowFilter.rules[]
Description::
+
--
`EBPFFlowFilterRule` defines the desired eBPF agent configuration regarding flow filtering rule.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `action`
| `string`
| `action` defines the action to perform on the flows that match the filter. The available options are `Accept`, which is the default, and `Reject`.
| `cidr`
| `string`
| `cidr` defines the IP CIDR to filter flows by.
Examples: `10.10.10.0/24` or `100:100:100:100::/64`
| `destPorts`
| `integer-or-string`
| `destPorts` optionally defines the destination ports to filter flows by.
To filter a single port, set a single port as an integer value. For example, `destPorts: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `destPorts: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `direction`
| `string`
| `direction` optionally defines a direction to filter flows by. The available options are `Ingress` and `Egress`.
| `icmpCode`
| `integer`
| `icmpCode`, for Internet Control Message Protocol (ICMP) traffic, optionally defines the ICMP code to filter flows by.
| `icmpType`
| `integer`
| `icmpType`, for ICMP traffic, optionally defines the ICMP type to filter flows by.
| `peerCIDR`
| `string`
| `peerCIDR` defines the Peer IP CIDR to filter flows by.
Examples: `10.10.10.0/24` or `100:100:100:100::/64`
| `peerIP`
| `string`
| `peerIP` optionally defines the remote IP address to filter flows by.
Example: `10.10.10.10`.
| `pktDrops`
| `boolean`
| `pktDrops` optionally filters only flows containing packet drops.
| `ports`
| `integer-or-string`
| `ports` optionally defines the ports to filter flows by. It is used both for source and destination ports.
To filter a single port, set a single port as an integer value. For example, `ports: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `ports: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `protocol`
| `string`
| `protocol` optionally defines a protocol to filter flows by. The available options are `TCP`, `UDP`, `ICMP`, `ICMPv6`, and `SCTP`.
| `sampling`
| `integer`
| `sampling` is the sampling interval for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
| `sourcePorts`
| `integer-or-string`
| `sourcePorts` optionally defines the source ports to filter flows by.
To filter a single port, set a single port as an integer value. For example, `sourcePorts: 80`.
To filter a range of ports, use a "start-end" range in string format. For example, `sourcePorts: "80-100"`.
To filter two ports, use a "port1,port2" in string format. For example, `ports: "80,100"`.
| `tcpFlags`
| `string`
| `tcpFlags` optionally defines TCP flags to filter flows by.
In addition to the standard flags (RFC-9293), you can also filter by one of the three following combinations: `SYN-ACK`, `FIN-ACK`, and `RST-ACK`.
|===
== .spec.agent.ebpf.metrics
Description::
+
--
`metrics` defines the eBPF agent configuration regarding metrics.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `disableAlerts`
| `array (string)`
| `disableAlerts` is a list of alerts that should be disabled.
Possible values are: +
`NetObservDroppedFlows`, which is triggered when the eBPF agent is missing packets or flows, such as when the BPF hashmap is busy or full, or the capacity limiter is being triggered. +
| `enable`
| `boolean`
| Set `enable` to `false` to disable eBPF agent metrics collection. It is enabled by default.
| `server`
| `object`
| Metrics server endpoint configuration for the Prometheus scraper.
|===
== .spec.agent.ebpf.metrics.server
Description::
+
--
Metrics server endpoint configuration for the Prometheus scraper.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `port`
| `integer`
| The metrics server HTTP port.
| `tls`
| `object`
| TLS configuration.
|===
== .spec.agent.ebpf.metrics.server.tls
Description::
+
--
TLS configuration.
--
Type::
`object`
Required::
- `type`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the provided certificate.
If set to `true`, the `providedCaFile` field is ignored.
| `provided`
| `object`
| TLS configuration when `type` is set to `Provided`.
| `providedCaFile`
| `object`
| Reference to the CA file when `type` is set to `Provided`.
| `type`
| `string`
| Select the type of TLS configuration: +
- `Disabled` (default) to not configure TLS for the endpoint.
- `Provided` to manually provide cert file and a key file. [Unsupported (*)].
- `Auto` to use {product-title} auto generated certificate using annotations.
|===
== .spec.agent.ebpf.metrics.server.tls.provided
Description::
+
--
TLS configuration when `type` is set to `Provided`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.agent.ebpf.metrics.server.tls.providedCaFile
Description::
+
--
Reference to the CA file when `type` is set to `Provided`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.agent.ebpf.resources
Description::
+
--
`resources` are the compute resources required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `limits`
| `integer-or-string`
| Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
| `requests`
| `integer-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. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
|===
== .spec.consolePlugin
Description::
+
--
`consolePlugin` defines the settings related to the {product-title} Console plugin, when available.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `advanced`
| `object`
| `advanced` allows setting some aspects of the internal configuration of the console plugin.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
| `autoscaler`
| `object`
| `autoscaler` spec of a horizontal pod autoscaler to set up for the plugin Deployment. Refer to HorizontalPodAutoscaler documentation (autoscaling/v2).
| `enable`
| `boolean`
| Enables the console plugin deployment.
| `imagePullPolicy`
| `string`
| `imagePullPolicy` is the Kubernetes pull policy for the image defined above
| `logLevel`
| `string`
| `logLevel` for the console plugin backend
| `portNaming`
| `object`
| `portNaming` defines the configuration of the port-to-service name translation
| `quickFilters`
| `array`
| `quickFilters` configures quick filter presets for the Console plugin
| `replicas`
| `integer`
| `replicas` defines the number of replicas (pods) to start.
| `resources`
| `object`
| `resources`, in terms of compute resources, required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
|===
== .spec.consolePlugin.advanced
Description::
+
--
`advanced` allows setting some aspects of the internal configuration of the console plugin.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `args`
| `array (string)`
| `args` allows passing custom arguments to underlying components. Useful for overriding
some parameters, such as a URL or a configuration path, that should not be
publicly exposed as part of the FlowCollector descriptor, as they are only useful
in edge debug or support scenarios.
| `env`
| `object (string)`
| `env` allows passing custom environment variables to underlying components. Useful for passing
some very concrete performance-tuning options, such as `GOGC` and `GOMAXPROCS`, that should not be
publicly exposed as part of the FlowCollector descriptor, as they are only useful
in edge debug or support scenarios.
| `port`
| `integer`
| `port` is the plugin service port. Do not use 9002, which is reserved for metrics.
| `register`
| `boolean`
| `register` allows, when set to `true`, to automatically register the provided console plugin with the {product-title} Console operator.
When set to `false`, you can still register it manually by editing console.operator.openshift.io/cluster with the following command:
`oc patch console.operator.openshift.io cluster --type='json' -p '[{"op": "add", "path": "/spec/plugins/-", "value": "netobserv-plugin"}]'`
| `scheduling`
| `object`
| `scheduling` controls how the pods are scheduled on nodes.
|===
== .spec.consolePlugin.advanced.scheduling
Description::
+
--
`scheduling` controls how the pods are scheduled on nodes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `affinity`
| `object`
| If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
| `nodeSelector`
| `object (string)`
| `nodeSelector` allows scheduling of pods only onto nodes that have each of the specified labels.
For documentation, refer to https://kubernetes.io/docs/concepts/configuration/assign-pod-node/.
| `priorityClassName`
| `string`
| If specified, indicates the pod's priority. For documentation, refer to https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#how-to-use-priority-and-preemption.
If not specified, default priority is used, or zero if there is no default.
| `tolerations`
| `array`
| `tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
|===
== .spec.consolePlugin.advanced.scheduling.affinity
Description::
+
--
If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`object`
== .spec.consolePlugin.advanced.scheduling.tolerations
Description::
+
--
`tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`array`
== .spec.consolePlugin.autoscaler
Description::
+
--
`autoscaler` spec of a horizontal pod autoscaler to set up for the plugin Deployment. Refer to HorizontalPodAutoscaler documentation (autoscaling/v2).
--
Type::
`object`
== .spec.consolePlugin.portNaming
Description::
+
--
`portNaming` defines the configuration of the port-to-service name translation
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `enable`
| `boolean`
| Enable the console plugin port-to-service name translation
| `portNames`
| `object (string)`
| `portNames` defines additional port names to use in the console,
for example, `portNames: {"3100": "loki"}`.
|===
== .spec.consolePlugin.quickFilters
Description::
+
--
`quickFilters` configures quick filter presets for the Console plugin
--
Type::
`array`
== .spec.consolePlugin.quickFilters[]
Description::
+
--
`QuickFilter` defines preset configuration for Console's quick filters
--
Type::
`object`
Required::
- `filter`
- `name`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `default`
| `boolean`
| `default` defines whether this filter should be active by default or not
| `filter`
| `object (string)`
| `filter` is a set of keys and values to be set when this filter is selected. Each key can relate to a list of values using a coma-separated string,
for example, `filter: {"src_namespace": "namespace1,namespace2"}`.
| `name`
| `string`
| Name of the filter, that is displayed in the Console
|===
== .spec.consolePlugin.resources
Description::
+
--
`resources`, in terms of compute resources, required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `limits`
| `integer-or-string`
| Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
| `requests`
| `integer-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. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
|===
== .spec.exporters
Description::
+
--
`exporters` defines additional optional exporters for custom consumption or storage.
--
Type::
`array`
== .spec.exporters[]
Description::
+
--
`FlowCollectorExporter` defines an additional exporter to send enriched flows to.
--
Type::
`object`
Required::
- `type`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `ipfix`
| `object`
| IPFIX configuration, such as the IP address and port to send enriched IPFIX flows to.
| `kafka`
| `object`
| Kafka configuration, such as the address and topic, to send enriched flows to.
| `openTelemetry`
| `object`
| OpenTelemetry configuration, such as the IP address and port to send enriched logs or metrics to.
| `type`
| `string`
| `type` selects the type of exporters. The available options are `Kafka`, `IPFIX`, and `OpenTelemetry`.
|===
== .spec.exporters[].ipfix
Description::
+
--
IPFIX configuration, such as the IP address and port to send enriched IPFIX flows to.
--
Type::
`object`
Required::
- `targetHost`
- `targetPort`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `targetHost`
| `string`
| Address of the IPFIX external receiver.
| `targetPort`
| `integer`
| Port for the IPFIX external receiver.
| `transport`
| `string`
| Transport protocol (`TCP` or `UDP`) to be used for the IPFIX connection, defaults to `TCP`.
|===
== .spec.exporters[].kafka
Description::
+
--
Kafka configuration, such as the address and topic, to send enriched flows to.
--
Type::
`object`
Required::
- `address`
- `topic`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `address`
| `string`
| Address of the Kafka server
| `sasl`
| `object`
| SASL authentication configuration. [Unsupported (*)].
| `tls`
| `object`
| TLS client configuration. When using TLS, verify that the address matches the Kafka port used for TLS, generally 9093.
| `topic`
| `string`
| Kafka topic to use. It must exist. Network Observability does not create it.
|===
== .spec.exporters[].kafka.sasl
Description::
+
--
SASL authentication configuration. [Unsupported (*)].
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `clientIDReference`
| `object`
| Reference to the secret or config map containing the client ID
| `clientSecretReference`
| `object`
| Reference to the secret or config map containing the client secret
| `type`
| `string`
| Type of SASL authentication to use, or `Disabled` if SASL is not used
|===
== .spec.exporters[].kafka.sasl.clientIDReference
Description::
+
--
Reference to the secret or config map containing the client ID
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.exporters[].kafka.sasl.clientSecretReference
Description::
+
--
Reference to the secret or config map containing the client secret
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.exporters[].kafka.tls
Description::
+
--
TLS client configuration. When using TLS, verify that the address matches the Kafka port used for TLS, generally 9093.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.exporters[].kafka.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.exporters[].kafka.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.exporters[].openTelemetry
Description::
+
--
OpenTelemetry configuration, such as the IP address and port to send enriched logs or metrics to.
--
Type::
`object`
Required::
- `targetHost`
- `targetPort`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `fieldsMapping`
| `array`
| Custom fields mapping to an OpenTelemetry conformant format.
By default, Network Observability format proposal is used: https://github.com/rhobs/observability-data-model/blob/main/network-observability.md#format-proposal .
As there is currently no accepted standard for L3 or L4 enriched network logs, you can freely override it with your own.
| `headers`
| `object (string)`
| Headers to add to messages (optional)
| `logs`
| `object`
| OpenTelemetry configuration for logs.
| `metrics`
| `object`
| OpenTelemetry configuration for metrics.
| `protocol`
| `string`
| Protocol of the OpenTelemetry connection. The available options are `http` and `grpc`.
| `targetHost`
| `string`
| Address of the OpenTelemetry receiver.
| `targetPort`
| `integer`
| Port for the OpenTelemetry receiver.
| `tls`
| `object`
| TLS client configuration.
|===
== .spec.exporters[].openTelemetry.fieldsMapping
Description::
+
--
Custom fields mapping to an OpenTelemetry conformant format.
By default, Network Observability format proposal is used: https://github.com/rhobs/observability-data-model/blob/main/network-observability.md#format-proposal .
As there is currently no accepted standard for L3 or L4 enriched network logs, you can freely override it with your own.
--
Type::
`array`
== .spec.exporters[].openTelemetry.fieldsMapping[]
Description::
+
--
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `input`
| `string`
|
| `multiplier`
| `integer`
|
| `output`
| `string`
|
|===
== .spec.exporters[].openTelemetry.logs
Description::
+
--
OpenTelemetry configuration for logs.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `enable`
| `boolean`
| Set `enable` to `true` to send logs to an OpenTelemetry receiver.
|===
== .spec.exporters[].openTelemetry.metrics
Description::
+
--
OpenTelemetry configuration for metrics.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `enable`
| `boolean`
| Set `enable` to `true` to send metrics to an OpenTelemetry receiver.
| `pushTimeInterval`
| `string`
| Specify how often metrics are sent to a collector.
|===
== .spec.exporters[].openTelemetry.tls
Description::
+
--
TLS client configuration.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.exporters[].openTelemetry.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.exporters[].openTelemetry.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.kafka
Description::
+
--
Kafka configuration, allowing to use Kafka as a broker as part of the flow collection pipeline. Available when the `spec.deploymentModel` is `Kafka`.
--
Type::
`object`
Required::
- `address`
- `topic`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `address`
| `string`
| Address of the Kafka server
| `sasl`
| `object`
| SASL authentication configuration. [Unsupported (*)].
| `tls`
| `object`
| TLS client configuration. When using TLS, verify that the address matches the Kafka port used for TLS, generally 9093.
| `topic`
| `string`
| Kafka topic to use. It must exist. Network Observability does not create it.
|===
== .spec.kafka.sasl
Description::
+
--
SASL authentication configuration. [Unsupported (*)].
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `clientIDReference`
| `object`
| Reference to the secret or config map containing the client ID
| `clientSecretReference`
| `object`
| Reference to the secret or config map containing the client secret
| `type`
| `string`
| Type of SASL authentication to use, or `Disabled` if SASL is not used
|===
== .spec.kafka.sasl.clientIDReference
Description::
+
--
Reference to the secret or config map containing the client ID
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.kafka.sasl.clientSecretReference
Description::
+
--
Reference to the secret or config map containing the client secret
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.kafka.tls
Description::
+
--
TLS client configuration. When using TLS, verify that the address matches the Kafka port used for TLS, generally 9093.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.kafka.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.kafka.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki
Description::
+
--
`loki`, the flow store, client settings.
--
Type::
`object`
Required::
- `mode`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `advanced`
| `object`
| `advanced` allows setting some aspects of the internal configuration of the Loki clients.
This section is aimed mostly for debugging and fine-grained performance optimizations.
| `enable`
| `boolean`
| Set `enable` to `true` to store flows in Loki.
The Console plugin can use either Loki or Prometheus as a data source for metrics (see also `spec.prometheus.querier`), or both.
Not all queries are transposable from Loki to Prometheus. Hence, if Loki is disabled, some features of the plugin are disabled as well,
such as getting per-pod information or viewing raw flows.
If both Prometheus and Loki are enabled, Prometheus takes precedence and Loki is used as a fallback for queries that Prometheus cannot handle.
If they are both disabled, the Console plugin is not deployed.
| `lokiStack`
| `object`
| Loki configuration for `LokiStack` mode. This is useful for an easy Loki Operator configuration.
It is ignored for other modes.
| `manual`
| `object`
| Loki configuration for `Manual` mode. This is the most flexible configuration.
It is ignored for other modes.
| `microservices`
| `object`
| Loki configuration for `Microservices` mode.
Use this option when Loki is installed using the microservices deployment mode (https://grafana.com/docs/loki/latest/fundamentals/architecture/deployment-modes/#microservices-mode).
It is ignored for other modes.
| `mode`
| `string`
| `mode` must be set according to the installation mode of Loki: +
- Use `LokiStack` when Loki is managed using the Loki Operator +
- Use `Monolithic` when Loki is installed as a monolithic workload +
- Use `Microservices` when Loki is installed as microservices, but without Loki Operator +
- Use `Manual` if none of the options above match your setup +
| `monolithic`
| `object`
| Loki configuration for `Monolithic` mode.
Use this option when Loki is installed using the monolithic deployment mode (https://grafana.com/docs/loki/latest/fundamentals/architecture/deployment-modes/#monolithic-mode).
It is ignored for other modes.
| `readTimeout`
| `string`
| `readTimeout` is the maximum console plugin loki query total time limit.
A timeout of zero means no timeout.
| `writeBatchSize`
| `integer`
| `writeBatchSize` is the maximum batch size (in bytes) of Loki logs to accumulate before sending.
| `writeBatchWait`
| `string`
| `writeBatchWait` is the maximum time to wait before sending a Loki batch.
| `writeTimeout`
| `string`
| `writeTimeout` is the maximum Loki time connection / request limit.
A timeout of zero means no timeout.
|===
== .spec.loki.advanced
Description::
+
--
`advanced` allows setting some aspects of the internal configuration of the Loki clients.
This section is aimed mostly for debugging and fine-grained performance optimizations.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `excludeLabels`
| `array (string)`
| `excludeLabels` is a list of fields to be excluded from the list of Loki labels. [Unsupported (*)].
| `staticLabels`
| `object (string)`
| `staticLabels` is a map of common labels to set on each flow in Loki storage.
| `writeMaxBackoff`
| `string`
| `writeMaxBackoff` is the maximum backoff time for Loki client connection between retries.
| `writeMaxRetries`
| `integer`
| `writeMaxRetries` is the maximum number of retries for Loki client connections.
| `writeMinBackoff`
| `string`
| `writeMinBackoff` is the initial backoff time for Loki client connection between retries.
|===
== .spec.loki.lokiStack
Description::
+
--
Loki configuration for `LokiStack` mode. This is useful for an easy Loki Operator configuration.
It is ignored for other modes.
--
Type::
`object`
Required::
- `name`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `name`
| `string`
| Name of an existing LokiStack resource to use.
| `namespace`
| `string`
| Namespace where this `LokiStack` resource is located. If omitted, it is assumed to be the same as `spec.namespace`.
|===
== .spec.loki.manual
Description::
+
--
Loki configuration for `Manual` mode. This is the most flexible configuration.
It is ignored for other modes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `authToken`
| `string`
| `authToken` describes the way to get a token to authenticate to Loki. +
- `Disabled` does not send any token with the request. +
- `Forward` forwards the user token for authorization. +
- `Host` [deprecated (*)] - uses the local pod service account to authenticate to Loki. +
When using the Loki Operator, this must be set to `Forward`.
| `ingesterUrl`
| `string`
| `ingesterUrl` is the address of an existing Loki ingester service to push the flows to. When using the Loki Operator,
set it to the Loki gateway service with the `network` tenant set in path, for example
https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network.
| `querierUrl`
| `string`
| `querierUrl` specifies the address of the Loki querier service.
When using the Loki Operator, set it to the Loki gateway service with the `network` tenant set in path, for example
https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network.
| `statusTls`
| `object`
| TLS client configuration for Loki status URL.
| `statusUrl`
| `string`
| `statusUrl` specifies the address of the Loki `/ready`, `/metrics` and `/config` endpoints, in case it is different from the
Loki querier URL. If empty, the `querierUrl` value is used.
This is useful to show error messages and some context in the frontend.
When using the Loki Operator, set it to the Loki HTTP query frontend service, for example
https://loki-query-frontend-http.netobserv.svc:3100/.
`statusTLS` configuration is used when `statusUrl` is set.
| `tenantID`
| `string`
| `tenantID` is the Loki `X-Scope-OrgID` that identifies the tenant for each request.
When using the Loki Operator, set it to `network`, which corresponds to a special tenant mode.
| `tls`
| `object`
| TLS client configuration for Loki URL.
|===
== .spec.loki.manual.statusTls
Description::
+
--
TLS client configuration for Loki status URL.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.loki.manual.statusTls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.manual.statusTls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.manual.tls
Description::
+
--
TLS client configuration for Loki URL.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.loki.manual.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.manual.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.microservices
Description::
+
--
Loki configuration for `Microservices` mode.
Use this option when Loki is installed using the microservices deployment mode (https://grafana.com/docs/loki/latest/fundamentals/architecture/deployment-modes/#microservices-mode).
It is ignored for other modes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `ingesterUrl`
| `string`
| `ingesterUrl` is the address of an existing Loki ingester service to push the flows to.
| `querierUrl`
| `string`
| `querierURL` specifies the address of the Loki querier service.
| `tenantID`
| `string`
| `tenantID` is the Loki `X-Scope-OrgID` header that identifies the tenant for each request.
| `tls`
| `object`
| TLS client configuration for Loki URL.
|===
== .spec.loki.microservices.tls
Description::
+
--
TLS client configuration for Loki URL.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.loki.microservices.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.microservices.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.monolithic
Description::
+
--
Loki configuration for `Monolithic` mode.
Use this option when Loki is installed using the monolithic deployment mode (https://grafana.com/docs/loki/latest/fundamentals/architecture/deployment-modes/#monolithic-mode).
It is ignored for other modes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `tenantID`
| `string`
| `tenantID` is the Loki `X-Scope-OrgID` header that identifies the tenant for each request.
| `tls`
| `object`
| TLS client configuration for Loki URL.
| `url`
| `string`
| `url` is the unique address of an existing Loki service that points to both the ingester and the querier.
|===
== .spec.loki.monolithic.tls
Description::
+
--
TLS client configuration for Loki URL.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.loki.monolithic.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.loki.monolithic.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.networkPolicy
Description::
+
--
`networkPolicy` defines network policy settings for Network Observability components isolation.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `additionalNamespaces`
| `array (string)`
| `additionalNamespaces` contains additional namespaces allowed to connect to the Network Observability namespace.
It provides flexibility in the network policy configuration, but if you need a more specific
configuration, you can disable it and install your own instead.
| `enable`
| `boolean`
| Deploys network policies on the namespaces used by Network Observability (main and privileged).
These network policies better isolate the Network Observability components to prevent undesired connections from and to them.
This option is enabled by default when using with OVNKubernetes, and disabled otherwise (it has not been tested with other CNIs).
When disabled, you can manually create the network policies for the Network Observability components.
|===
== .spec.processor
Description::
+
--
`processor` defines the settings of the component that receives the flows from the agent,
enriches them, generates metrics, and forwards them to the Loki persistence layer and/or any available exporter.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `addZone`
| `boolean`
| `addZone` allows availability zone awareness by labelling flows with their source and destination zones.
This feature requires the "topology.kubernetes.io/zone" label to be set on nodes.
| `advanced`
| `object`
| `advanced` allows setting some aspects of the internal configuration of the flow processor.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
| `clusterName`
| `string`
| `clusterName` is the name of the cluster to appear in the flows data. This is useful in a multi-cluster context. When using {product-title}, leave empty to make it automatically determined.
| `deduper`
| `object`
| `deduper` allows you to sample or drop flows identified as duplicates, in order to save on resource usage.
| `filters`
| `array`
| `filters` lets you define custom filters to limit the amount of generated flows.
These filters provide more flexibility than the eBPF Agent filters (in `spec.agent.ebpf.flowFilter`), such as allowing to filter by Kubernetes namespace,
but with a lesser improvement in performance.
| `imagePullPolicy`
| `string`
| `imagePullPolicy` is the Kubernetes pull policy for the image defined above
| `kafkaConsumerAutoscaler`
| `object`
| `kafkaConsumerAutoscaler` is the spec of a horizontal pod autoscaler to set up for `flowlogs-pipeline-transformer`, which consumes Kafka messages.
This setting is ignored when Kafka is disabled. Refer to HorizontalPodAutoscaler documentation (autoscaling/v2).
| `kafkaConsumerBatchSize`
| `integer`
| `kafkaConsumerBatchSize` indicates to the broker the maximum batch size, in bytes, that the consumer accepts. Ignored when not using Kafka. Default: 10MB.
| `kafkaConsumerQueueCapacity`
| `integer`
| `kafkaConsumerQueueCapacity` defines the capacity of the internal message queue used in the Kafka consumer client. Ignored when not using Kafka.
| `kafkaConsumerReplicas`
| `integer`
| `kafkaConsumerReplicas` defines the number of replicas (pods) to start for `flowlogs-pipeline-transformer`, which consumes Kafka messages.
This setting is ignored when Kafka is disabled.
| `logLevel`
| `string`
| `logLevel` of the processor runtime
| `logTypes`
| `string`
| `logTypes` defines the desired record types to generate. Possible values are: +
- `Flows` to export regular network flows. This is the default. +
- `Conversations` to generate events for started conversations, ended conversations as well as periodic "tick" updates. Note that in this mode, Prometheus metrics are not accurate on long-standing conversations. +
- `EndedConversations` to generate only ended conversations events. Note that in this mode, Prometheus metrics are not accurate on long-standing conversations. +
- `All` to generate both network flows and all conversations events. It is not recommended due to the impact on resources footprint. +
| `metrics`
| `object`
| `Metrics` define the processor configuration regarding metrics
| `multiClusterDeployment`
| `boolean`
| Set `multiClusterDeployment` to `true` to enable multi clusters feature. This adds `clusterName` label to flows data
| `resources`
| `object`
| `resources` are the compute resources required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
| `subnetLabels`
| `object`
| `subnetLabels` allows to define custom labels on subnets and IPs or to enable automatic labelling of recognized subnets in {product-title}, which is used to identify cluster external traffic.
When a subnet matches the source or destination IP of a flow, a corresponding field is added: `SrcSubnetLabel` or `DstSubnetLabel`.
|===
== .spec.processor.advanced
Description::
+
--
`advanced` allows setting some aspects of the internal configuration of the flow processor.
This section is aimed mostly for debugging and fine-grained performance optimizations,
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `conversationEndTimeout`
| `string`
| `conversationEndTimeout` is the time to wait after a network flow is received, to consider the conversation ended.
This delay is ignored when a FIN packet is collected for TCP flows (see `conversationTerminatingTimeout` instead).
| `conversationHeartbeatInterval`
| `string`
| `conversationHeartbeatInterval` is the time to wait between "tick" events of a conversation
| `conversationTerminatingTimeout`
| `string`
| `conversationTerminatingTimeout` is the time to wait from detected FIN flag to end a conversation. Only relevant for TCP flows.
| `dropUnusedFields`
| `boolean`
| `dropUnusedFields` [deprecated (*)] this setting is not used anymore.
| `enableKubeProbes`
| `boolean`
| `enableKubeProbes` is a flag to enable or disable Kubernetes liveness and readiness probes
| `env`
| `object (string)`
| `env` allows passing custom environment variables to underlying components. Useful for passing
some very concrete performance-tuning options, such as `GOGC` and `GOMAXPROCS`, that should not be
publicly exposed as part of the FlowCollector descriptor, as they are only useful
in edge debug or support scenarios.
| `healthPort`
| `integer`
| `healthPort` is a collector HTTP port in the Pod that exposes the health check API
| `port`
| `integer`
| Port of the flow collector (host port).
By convention, some values are forbidden. It must be greater than 1024 and different from
4500, 4789 and 6081.
| `profilePort`
| `integer`
| `profilePort` allows setting up a Go pprof profiler listening to this port
| `scheduling`
| `object`
| scheduling controls how the pods are scheduled on nodes.
| `secondaryNetworks`
| `array`
| Defines secondary networks to be checked for resources identification.
To guarantee a correct identification, indexed values must form an unique identifier across the cluster.
If the same index is used by several resources, those resources might be incorrectly labeled.
|===
== .spec.processor.advanced.scheduling
Description::
+
--
scheduling controls how the pods are scheduled on nodes.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `affinity`
| `object`
| If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
| `nodeSelector`
| `object (string)`
| `nodeSelector` allows scheduling of pods only onto nodes that have each of the specified labels.
For documentation, refer to https://kubernetes.io/docs/concepts/configuration/assign-pod-node/.
| `priorityClassName`
| `string`
| If specified, indicates the pod's priority. For documentation, refer to https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#how-to-use-priority-and-preemption.
If not specified, default priority is used, or zero if there is no default.
| `tolerations`
| `array`
| `tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
|===
== .spec.processor.advanced.scheduling.affinity
Description::
+
--
If specified, the pod's scheduling constraints. For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`object`
== .spec.processor.advanced.scheduling.tolerations
Description::
+
--
`tolerations` is a list of tolerations that allow the pod to schedule onto nodes with matching taints.
For documentation, refer to https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling.
--
Type::
`array`
== .spec.processor.advanced.secondaryNetworks
Description::
+
--
Defines secondary networks to be checked for resources identification.
To guarantee a correct identification, indexed values must form an unique identifier across the cluster.
If the same index is used by several resources, those resources might be incorrectly labeled.
--
Type::
`array`
== .spec.processor.advanced.secondaryNetworks[]
Description::
+
--
--
Type::
`object`
Required::
- `index`
- `name`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `index`
| `array (string)`
| `index` is a list of fields to use for indexing the pods. They should form a unique Pod identifier across the cluster.
Can be any of: `MAC`, `IP`, `Interface`.
Fields absent from the 'k8s.v1.cni.cncf.io/network-status' annotation must not be added to the index.
| `name`
| `string`
| `name` should match the network name as visible in the pods annotation 'k8s.v1.cni.cncf.io/network-status'.
|===
== .spec.processor.deduper
Description::
+
--
`deduper` allows you to sample or drop flows identified as duplicates, in order to save on resource usage.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `mode`
| `string`
| Set the Processor de-duplication mode. It comes in addition to the Agent-based deduplication, since the Agent cannot de-duplicate same flows reported from different nodes. +
- Use `Drop` to drop every flow considered as duplicates, allowing saving more on resource usage but potentially losing some information such as the network interfaces used from peer, or network events. +
- Use `Sample` to randomly keep only one flow on 50, which is the default, among the ones considered as duplicates. This is a compromise between dropping every duplicate or keeping every duplicate. This sampling action comes in addition to the Agent-based sampling. If both Agent and Processor sampling values are `50`, the combined sampling is 1:2500. +
- Use `Disabled` to turn off Processor-based de-duplication. +
| `sampling`
| `integer`
| `sampling` is the sampling interval when deduper `mode` is `Sample`. For example, a value of `50` means that 1 flow in 50 is sampled.
|===
== .spec.processor.filters
Description::
+
--
`filters` lets you define custom filters to limit the amount of generated flows.
These filters provide more flexibility than the eBPF Agent filters (in `spec.agent.ebpf.flowFilter`), such as allowing to filter by Kubernetes namespace,
but with a lesser improvement in performance.
--
Type::
`array`
== .spec.processor.filters[]
Description::
+
--
`FLPFilterSet` defines the desired configuration for FLP-based filtering satisfying all conditions.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `outputTarget`
| `string`
| If specified, these filters target a single output: `Loki`, `Metrics` or `Exporters`. By default, all outputs are targeted.
| `query`
| `string`
| A query that selects the network flows to keep. More information about this query language in https://github.com/netobserv/flowlogs-pipeline/blob/main/docs/filtering.md.
| `sampling`
| `integer`
| `sampling` is an optional sampling interval to apply to this filter. For example, a value of `50` means that 1 matching flow in 50 is sampled.
|===
== .spec.processor.kafkaConsumerAutoscaler
Description::
+
--
`kafkaConsumerAutoscaler` is the spec of a horizontal pod autoscaler to set up for `flowlogs-pipeline-transformer`, which consumes Kafka messages.
This setting is ignored when Kafka is disabled. Refer to HorizontalPodAutoscaler documentation (autoscaling/v2).
--
Type::
`object`
== .spec.processor.metrics
Description::
+
--
`Metrics` define the processor configuration regarding metrics
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `alerts`
| `array`
| `alerts` is a list of alerts to be created for Prometheus AlertManager, organized by templates and variants [Unsupported (*)].
This is currently an experimental feature behind a feature gate. To enable, edit `spec.processor.advanced.env` by adding `EXPERIMENTAL_ALERTS_HEALTH` set to `true`.
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
| `disableAlerts`
| `array (string)`
| `disableAlerts` is a list of alert groups that should be disabled from the default set of alerts.
Possible values are: `NetObservNoFlows`, `NetObservLokiError`, `PacketDropsByKernel`, `PacketDropsByDevice`, `IPsecErrors`, `NetpolDenied`,
`LatencyHighTrend`, `DNSErrors`, `ExternalEgressHighTrend`, `ExternalIngressHighTrend`, `CrossAZ`.
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
| `includeList`
| `array (string)`
| `includeList` is a list of metric names to specify which ones to generate.
The names correspond to the names in Prometheus without the prefix. For example,
`namespace_egress_packets_total` shows up as `netobserv_namespace_egress_packets_total` in Prometheus.
Note that the more metrics you add, the bigger is the impact on Prometheus workload resources.
Metrics enabled by default are:
`namespace_flows_total`, `node_ingress_bytes_total`, `node_egress_bytes_total`, `workload_ingress_bytes_total`,
`workload_egress_bytes_total`, `namespace_drop_packets_total` (when `PacketDrop` feature is enabled),
`namespace_rtt_seconds` (when `FlowRTT` feature is enabled), `namespace_dns_latency_seconds` (when `DNSTracking` feature is enabled),
`namespace_network_policy_events_total` (when `NetworkEvents` feature is enabled).
More information, with full list of available metrics: https://github.com/netobserv/network-observability-operator/blob/main/docs/Metrics.md
| `server`
| `object`
| Metrics server endpoint configuration for Prometheus scraper
|===
== .spec.processor.metrics.alerts
Description::
+
--
`alerts` is a list of alerts to be created for Prometheus AlertManager, organized by templates and variants [Unsupported (*)].
This is currently an experimental feature behind a feature gate. To enable, edit `spec.processor.advanced.env` by adding `EXPERIMENTAL_ALERTS_HEALTH` set to `true`.
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
--
Type::
`array`
== .spec.processor.metrics.alerts[]
Description::
+
--
--
Type::
`object`
Required::
- `template`
- `variants`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `template`
| `string`
| Alert template name.
Possible values are: `PacketDropsByKernel`, `PacketDropsByDevice`, `IPsecErrors`, `NetpolDenied`,
`LatencyHighTrend`, `DNSErrors`, `ExternalEgressHighTrend`, `ExternalIngressHighTrend`, `CrossAZ`.
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
| `variants`
| `array`
| A list of variants for this template
|===
== .spec.processor.metrics.alerts[].variants
Description::
+
--
A list of variants for this template
--
Type::
`array`
== .spec.processor.metrics.alerts[].variants[]
Description::
+
--
--
Type::
`object`
Required::
- `thresholds`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `groupBy`
| `string`
| Optional grouping criteria, possible values are: `Node`, `Namespace`, `Workload`.
| `lowVolumeThreshold`
| `string`
| The low volume threshold allows to ignore metrics with a too low volume of traffic, in order to improve signal-to-noise.
It is provided as an absolute rate (bytes per second or packets per second, depending on the context).
When provided, it must be parsable as a float.
| `thresholds`
| `object`
| Thresholds of the alert per severity.
They are expressed as a percentage of errors above which the alert is triggered. They must be parsable as floats.
| `trendDuration`
| `string`
| For trending alerts, the duration interval for baseline comparison. For example, "2h" means comparing against a 2-hours average. Defaults to 2h.
| `trendOffset`
| `string`
| For trending alerts, the time offset for baseline comparison. For example, "1d" means comparing against yesterday. Defaults to 1d.
|===
== .spec.processor.metrics.alerts[].variants[].thresholds
Description::
+
--
Thresholds of the alert per severity.
They are expressed as a percentage of errors above which the alert is triggered. They must be parsable as floats.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `critical`
| `string`
| Threshold for severity `critical`. Leave empty to not generate a Critical alert.
| `info`
| `string`
| Threshold for severity `info`. Leave empty to not generate an Info alert.
| `warning`
| `string`
| Threshold for severity `warning`. Leave empty to not generate a Warning alert.
|===
== .spec.processor.metrics.server
Description::
+
--
Metrics server endpoint configuration for Prometheus scraper
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `port`
| `integer`
| The metrics server HTTP port.
| `tls`
| `object`
| TLS configuration.
|===
== .spec.processor.metrics.server.tls
Description::
+
--
TLS configuration.
--
Type::
`object`
Required::
- `type`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the provided certificate.
If set to `true`, the `providedCaFile` field is ignored.
| `provided`
| `object`
| TLS configuration when `type` is set to `Provided`.
| `providedCaFile`
| `object`
| Reference to the CA file when `type` is set to `Provided`.
| `type`
| `string`
| Select the type of TLS configuration: +
- `Disabled` (default) to not configure TLS for the endpoint.
- `Provided` to manually provide cert file and a key file. [Unsupported (*)].
- `Auto` to use {product-title} auto generated certificate using annotations.
|===
== .spec.processor.metrics.server.tls.provided
Description::
+
--
TLS configuration when `type` is set to `Provided`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.processor.metrics.server.tls.providedCaFile
Description::
+
--
Reference to the CA file when `type` is set to `Provided`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `file`
| `string`
| File name within the config map or secret.
| `name`
| `string`
| Name of the config map or secret containing the file.
| `namespace`
| `string`
| Namespace of the config map or secret containing the file. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the file reference: `configmap` or `secret`.
|===
== .spec.processor.resources
Description::
+
--
`resources` are the compute resources required by this container.
For more information, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `limits`
| `integer-or-string`
| Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
| `requests`
| `integer-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. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
|===
== .spec.processor.subnetLabels
Description::
+
--
`subnetLabels` allows to define custom labels on subnets and IPs or to enable automatic labelling of recognized subnets in {product-title}, which is used to identify cluster external traffic.
When a subnet matches the source or destination IP of a flow, a corresponding field is added: `SrcSubnetLabel` or `DstSubnetLabel`.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `customLabels`
| `array`
| `customLabels` allows to customize subnets and IPs labelling, such as to identify cluster-external workloads or web services.
If you enable `openShiftAutoDetect`, `customLabels` can override the detected subnets in case they overlap.
| `openShiftAutoDetect`
| `boolean`
| `openShiftAutoDetect` allows, when set to `true`, to detect automatically the machines, pods and services subnets based on the
{product-title} install configuration and the Cluster Network Operator configuration. Indirectly, this is a way to accurately detect
external traffic: flows that are not labeled for those subnets are external to the cluster. Enabled by default on {product-title}.
|===
== .spec.processor.subnetLabels.customLabels
Description::
+
--
`customLabels` allows to customize subnets and IPs labelling, such as to identify cluster-external workloads or web services.
If you enable `openShiftAutoDetect`, `customLabels` can override the detected subnets in case they overlap.
--
Type::
`array`
== .spec.processor.subnetLabels.customLabels[]
Description::
+
--
SubnetLabel allows to label subnets and IPs, such as to identify cluster-external workloads or web services.
--
Type::
`object`
Required::
- `cidrs`
- `name`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `cidrs`
| `array (string)`
| List of CIDRs, such as `["1.2.3.4/32"]`.
| `name`
| `string`
| Label name, used to flag matching flows.
|===
== .spec.prometheus
Description::
+
--
`prometheus` defines Prometheus settings, such as querier configuration used to fetch metrics from the Console plugin.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `querier`
| `object`
| Prometheus querying configuration, such as client settings, used in the Console plugin.
|===
== .spec.prometheus.querier
Description::
+
--
Prometheus querying configuration, such as client settings, used in the Console plugin.
--
Type::
`object`
Required::
- `mode`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `enable`
| `boolean`
| When `enable` is `true`, the Console plugin queries flow metrics from Prometheus instead of Loki whenever possible.
It is enbaled by default: set it to `false` to disable this feature.
The Console plugin can use either Loki or Prometheus as a data source for metrics (see also `spec.loki`), or both.
Not all queries are transposable from Loki to Prometheus. Hence, if Loki is disabled, some features of the plugin are disabled as well,
such as getting per-pod information or viewing raw flows.
If both Prometheus and Loki are enabled, Prometheus takes precedence and Loki is used as a fallback for queries that Prometheus cannot handle.
If they are both disabled, the Console plugin is not deployed.
| `manual`
| `object`
| Prometheus configuration for `Manual` mode.
| `mode`
| `string`
| `mode` must be set according to the type of Prometheus installation that stores Network Observability metrics: +
- Use `Auto` to try configuring automatically. In {product-title}, it uses the Thanos querier from {product-title} Cluster Monitoring +
- Use `Manual` for a manual setup +
| `timeout`
| `string`
| `timeout` is the read timeout for console plugin queries to Prometheus.
A timeout of zero means no timeout.
|===
== .spec.prometheus.querier.manual
Description::
+
--
Prometheus configuration for `Manual` mode.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `forwardUserToken`
| `boolean`
| Set `true` to forward logged in user token in queries to Prometheus
| `tls`
| `object`
| TLS client configuration for Prometheus URL.
| `url`
| `string`
| `url` is the address of an existing Prometheus service to use for querying metrics.
|===
== .spec.prometheus.querier.manual.tls
Description::
+
--
TLS client configuration for Prometheus URL.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `caCert`
| `object`
| `caCert` defines the reference of the certificate for the Certificate Authority.
| `enable`
| `boolean`
| Enable TLS
| `insecureSkipVerify`
| `boolean`
| `insecureSkipVerify` allows skipping client-side verification of the server certificate.
If set to `true`, the `caCert` field is ignored.
| `userCert`
| `object`
| `userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
|===
== .spec.prometheus.querier.manual.tls.caCert
Description::
+
--
`caCert` defines the reference of the certificate for the Certificate Authority.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===
== .spec.prometheus.querier.manual.tls.userCert
Description::
+
--
`userCert` defines the user certificate reference and is used for mTLS. When you use one-way TLS, you can ignore this property.
--
Type::
`object`
[cols="1,1,1",options="header"]
|===
| Property | Type | Description
| `certFile`
| `string`
| `certFile` defines the path to the certificate file name within the config map or secret.
| `certKey`
| `string`
| `certKey` defines the path to the certificate private key file name within the config map or secret. Omit when the key is not necessary.
| `name`
| `string`
| Name of the config map or secret containing certificates.
| `namespace`
| `string`
| Namespace of the config map or secret containing certificates. If omitted, the default is to use the same namespace as where Network Observability is deployed.
If the namespace is different, the config map or the secret is copied so that it can be mounted as required.
| `type`
| `string`
| Type for the certificate reference: `configmap` or `secret`.
|===