Changelog
List of aperture PRs merged since 2.5.0 release. For the full list of changes, see [list of changes][changes]
blueprints: required values based on defaults instead of annotations (2197)
Description of change
- Required values are now determined based on `__REQUIRED_FIELD__` in
the default value instead of the `required` annotation
- Removed `--only-required` flag in aperturectl
- Tweaked auto-scale blueprint by sharing controller schema and renaming
`threshold` to `setpoint`
![Screenshot 2023-06-26 at 5 24 09
PM](https://github.com/fluxninja/aperture/assets/18579817/e01b5f55-5dc5-441b-bdab-f9d58d15ae87)
**New Feature:**
- Added Pod Auto-scaler policy for auto-scaling based on resource usage
- Introduced Feature Rollout policies with Average Latency, Percentile
Latency, and PromQL configurations
- Implemented EMA Latency policy for feature rollout
**Documentation:**
- Updated documentation for blueprints, policies, and ApertureCTL
commands
**Refactor:**
- Refactored blueprint-assets-generator.py and related scripts
> ๐ A new era of scaling, we embrace,
> With policies refined, and features to trace.
> ๐ Our systems adapt, as demands arise,
> Ensuring performance, reaching for the skies. ๐
blueprints: remove autoscale escalation and jmx blueprint (2192)
Description of change
Remove auto-scale escalation (within service protection) and JMX
blueprint
<img width="1301" alt="Screenshot 2023-06-25 at 4 35 36 PM"
src="https://github.com/fluxninja/aperture/assets/18579817/8efa89f9-f0c3-436e-bd35-052fc7ea22e2">
**Removed Feature:**
- Load-based auto-scaling and service protection blueprints,
configurations, and documentation
**Documentation:**
- Removed various auto-scaling and JMX related documentation
**Chore:**
- Deleted Grafana dashboards and load testing scripts for removed
features
> ๐ Farewell to auto-scaling, we part ways today,
> Service protection, too, has gone away.
> Though features are lost, our code remains strong,
> Optimized and focused, we'll keep moving along. ๐
perf: Misc speedups in otelcollector processors (2186)
* Speed up sorting in rollupprocessor.key:
~7.5ยตs โย ~4.5ยตs improvement of key() (translating to ~%0.5 total).
Also: add bench, tweak initial capacity.
* metricsprocessor:
* Speed up AddCheckResponseBasedLabels: 2% โย 1%
* Avoid Sprintf + Join (do a single Sprintf instead).
* Remove intermediate labels map.
* Avoid deep copies (CopyTo).
* Don't lookup an attribute multiple times (every attribute is Put
exactly once).
* Try to ensure slice capacity where possible.
* Avoid getters on checkResponse, use fields directly (it's never nil,
so we can do it).
* Avoid String() for stringifying enums, because they for some reason go
through protoreflect.
* Simplify EnforceInclude/ExcludeList: 0.6% โ 0.4%.
Leveraging Map.RemoveIf added in collector v0.59.
Change PromQL Query Interval (2168)
Description of change
![screencapture-localhost-3000-d-1cafa24eadc87e0eeb9217b9179e31473bcfa21d-aperture-service-protection-2023-06-22-14_36_42](https://github.com/fluxninja/aperture/assets/1553055/db4212e9-a9c0-475e-a91b-39c7a15232ea)
- New Feature: Updated evaluation intervals for PromQL queries in various files
- Refactor: Adjusted Grafana dashboard intervals
- Documentation: Updated documentation to reflect new interval values
- Performance: Modified scrape intervals and batch processing settings in extensions/fluxninja/otel/provide.go
> ๐ With intervals refined, our queries align,
> Performance enhanced, as stars do shine! โจ
> Dashboards adapt, with grace and ease,
> A pull request that aims to please! ๐
Refactored infra_meters: Replaced telemetry_collectors with infra_meters (2185)
![image](https://github.com/fluxninja/aperture/assets/34568645/20c13419-0cbe-4b5f-bc06-6ef73c24df41)
New Feature:
- Replaced deprecated `telemetry_collectors` with new `infra_meters` map
- Updated related fields and objects in various configuration files and documentation
Refactor:
- Modified control structures and variable assignments for infra meters implementation
> ๐ Infra meters rise, telemetry collectors fall,
> A new era dawns, as we heed the call.
> With maps and fields, configurations align,
> Our code evolves, ever more refined. ๐
Added metrics labels for flux meter and telemetry collectors (2180)
**New Feature:**
- Added `policy_name` field to FluxMeterWrapper,
TelemetryCollectorWrapper, and InfraMeterWrapper messages
- Updated PromQL queries and dashboards to include `policy_name` label
- Modified OpenTelemetry configuration to handle new InfraMeterWrapper
type
**Refactor:**
- Changed `customConfig` map to `allInfraMeters` map in otel-config.go
- Updated AddInfraMeters function to accept new parameter types
> ๐ A new dawn for policies, we cheer! ๐ฅณ
> With names attached, the path is clear. ๐ฃ๏ธ
> Dashboards refined, metrics aligned, ๐
> In this PR, great progress we find! ๐
Avoid deep copy in entity lookup (2178)
We never mutate entities directly in the maps, so copying was not necessary.
Also, added added a type wrapper so it's less likely someone tries mutating the
returned entity.
Drive-by:
* Stop using proto-generated structs for Entities datastructure.
* Fix lock in Clear() (fortunately, used only in tests).
Part of 2170
Avoid calling RequestToInput when not needed (2173)
Now RequestToInput convertion is done only when there are matching
classifiers.
Also: Speed up slightly RequestToInput in cases when it is run (~16ยตs
โย 13ยตs,
244 allocs โย 190 allocs).
Resolves: 2171
Remove protoc-gen-go-deepcopy buf plugin (2176)
Description of change
- Replace deepcopy with `proto.Clone`
- Maintain local types in static service discovery instead of using the
proto one
- Fix error in dashboard generation of adaptive-load-scheduler
![screencapture-localhost-3000-d-1cafa24eadc87e0eeb9217b9179e31473bcfa21d-aperture-service-protection-2023-06-20-14_32_15](https://github.com/fluxninja/aperture/assets/1553055/530d920b-50b6-4c5e-86ba-bbc051ba7939)
**Bug fix:**
- Fixed an error in dashboard generation of adaptive-load-scheduler
**Refactor:**
- Replaced `protoc-gen-go-deepcopy` buf plugin with `proto.Clone`
- Maintained local types in static service discovery instead of using
the proto one
- Minor changes in peers package that do not affect code logic
significantly
> ๐ With bugs fixed and refactors done,
> Our code shines bright like the morning sun. ๐
> Cloning made easy, types now aligned,
> A better release, users will find. ๐
Add QuotaScheduler processing to CheckResponse label adding (2169)
[changes]: https://github.com/fluxninja/aperture/compare/releases/aperture-controller/v2.5.0...releases/aperture-controller/v2.6.0