Changelog
List of aperture PRs merged since 0.14.0 release. For the full list of changes, see [list of changes][changes]
Scrape otel metrics alongside aperture self scrape (1037)
Add prometheus scrape target for OTEL internal metrics exposed on default on port 8888
rollupprocessor: Speed up key calculation (1036)
Avoided json marshal (and AsRaw()) convertion by serializing attribute
maps "manually" (unfortunately, we couldn't use proto marshaller
directly).
Perhaps Sort() can also be avoided, as attributes should already be in
repeatable order, but left it just in case.
This speeds up rollupprocessor about twice.
Fix alerts channel marshall & add resolve timeout helpers (1034)
* Properly marshal `alert_channels` alert label to OTEL logs
* Drive-By: remove unused jsonnet import
* Add trace logging to Alertmanager exporter
* Add resolve timeout helpers to Alerts
Fix PromQL component type to be Source (1032)
It was mistakenly changed to SignalProcessor in 1005.
Alerting tweaks (1026)
* Add `namespace` label to alerts which is required by Alertmanager to
properly ingest Alerts.
* Add alert channels configuration to example policy.
* Drive-by: fix default duration in Alerter proto.
refactor: Clean up rollup types initialization (1029)
Rollup struct was used both as "single rollup" and "group of rollups".
Splitted it into RollupGroup and Rollup to avoid confusion.
Also:
* Removed mapstructure annotations to avoid confusion that it's
loaded from config (it's not).
* Moved rollup list from global to rollupProcessor struct (in
preparation in making rollup processor configurable).
Towards Infra Control Points (1025)
Description of change
* Rename
* `Selector` -> `FlowSelector`
* `FlowSelector` -> `FlowMatcher`
* Define `KubernetesSelector` that can be used to select pods belonging
to a Kubernetes resource
Add basic unit-test framework for testing circuits (1019)
Added sim.Circuit which can be used to simulate a circuit using given
Inputs, capturing listed output signals. Circuit can be defined as list
of ConfiguredComponents or parsed from yaml.
Drive-by: Simplify circuit.NewCircuitWithOptions
refactor: Split circuit compilation and misc refactors (1017)
Now CreateComponents and Compile are separate functions.
CompileFromProto is added as a helper to call both of these steps.
Compile is now in the runtime package. This function seemed "pure" enough to
belong to runtime package. Now runtime.Circuit can be created with just runtime
package.
Drive-by:
* Misc renames and code shuffling.
* Cleaned up `Component* structs` naming, now they are just:
* ConfiguredComponent = Component + PortMapping + Config.
Used at creation stage. Input for circuit compilation.
* CompiledComponent = Component + In/OutPortToSignals.
Used by runtime.Circuit. Result of circuit compilation.
This allows to avoid fields that are used only at some stage of circuit
lifecycle.
* Extracted mapstruct to a separate package.
* Merged component factory and circuitcompiler into single package
(circuitfactory).
Fix Alerts Receiver (1023)
Due to missing `for`, the alerts receiver was terminated after receiving one alert. This led to alerts channel to fill up and `AddAlert` being blocking call, which resulted in entire Policy Circuit being blocked.
jobs: publish liveness error on timeout (1020)
Description of change
Liveness status was not being updated correctly in case of job timeouts.
Co-authored-by: Tanveer Gill <tanveer.gillfluxninja.com>
Add channel and severity helpers to alerts (1018)
* Add helpers for alert channels, so it is not set directly in alert
labels.
* Make severity helpers typed, so severity values are unified.
Alerts improvements (1015)
* Add PostableAlert helpers to Alert. Those will help convert Alert
from/to PostableAlert.
* Make AM client interface prometheus agnostic
* Drive-by: Fix Alertmanager exporter not sending full Alerts.
[changes]: https://github.com/fluxninja/aperture/compare/releases/aperture-controller/v0.14.0...releases/aperture-controller/v0.15.0