Changelog
List of aperture PRs merged since 2.7.0 release. For the full list of changes, see [list of changes][changes]
Update aperturectl docs (2327)
**Documentation:**
- Updated the `aperturectl` command usage examples in both the source
code and documentation. The `--name` parameter value has been changed
from `policies/rate-limiting` to `rate-limiting/base`.
> π With a tweak here, and a tweak there, π οΈ
> Our docs now have a brand new flair! π
> No more confusion, no more despair, π«π€―
> Just clear commands floating in the air. π»π
Add ability to define queue timeout in scheduler workload (2326)
![screencapture-localhost-3000-d-1cafa24eadc87e0eeb9217b9179e31473bcfa21d-aperture-service-protection-2023-07-06-14_37_41](https://github.com/fluxninja/aperture/assets/1553055/7e9a5bb8-d47c-46c5-a706-c27684c5bdae)
markdown
**New Feature**
- Added a new field `queue_timeout` to the `Scheduler` message in protobuf definition, allowing users to set a timeout for the flow in the workload. The minimum of the client's timeout and the defined workload timeout is used.
**Refactor**
- Simplified function signatures of `ProcessRequest` in the `Engine` struct and `CheckRequest` in the `Handler` struct by writing parameters on one line.
> π With timeouts now in control, our flows are on a roll! π
> No more waiting in despair, your requests are handled with care. π»
> Function signatures sleek and neat, making our codebase petite! π
Docs: consistent casing of Aperture Controller & Agent (2316)
Document duration and other minor fixes (2312)
Add `policies` command to `aperturectl` (2310)
New command allows to list all the applied policies.
Add `api-key` flag to `aperturectl` (2307)
This allows to interact with Cloud Controller using `aperturectl`.
Make oauth in Prom client optional (2305)
Read controller ID from config (2298)
**Refactor:**
- Added a new configuration parameter `controller_id` to the
FluxNinjaExtensionConfig.
- Modified the `setupControllerInfo` function in the `Heartbeats`
package to accept controller ID as an argument.
- Changed the names of Kubernetes Secret objects and removed
`OwnerReferences` and `Annotations` fields from several Kubernetes
objects.
- Adjusted the secret key name and modified how controller names are
generated.
- Changed the `ControllerServiceName` constant and added a boolean
argument to the `ControllerVolumes` function.
> π With every line of code, we stride,
> Refactoring with pride, no place to hide.
> Secrets renamed, constants re-framed,
> Controller IDs tamed, our goals aimed. π
> In the heart of the beats, where the controller meets,
> A new tale repeats, as the old one retreats. π
Make controller interactions with etcd and prometheus multi-tenant aware (2204)
**New Features:**
- Introduced multi-tenancy support for etcd and Prometheus
configurations.
- Added a new `namespace` field for etcd configuration.
- Implemented OAuth2 token source for Google Cloud Platform (GCP).
- Added new configuration options for etcd, fluxninja, otel, server, and
token_source.
> π With namespaces wide and broad,
> And configs in accord,
> We stride towards the cloud so high,
> With OAuth as our guide. π
> Multi-tenancy now in sight,
> In etcd and Prometheus' light,
> A new dawn of features bright,
> In this release takes flight! π
---------
Co-authored-by: Filip Chmielewski <filip.chmielewskifluxninja.com>
Upgrade OTEL to v0.80.0 (2269)
![image](https://github.com/fluxninja/aperture/assets/34568645/21f5ebc0-60c1-42de-958e-4e25d71e7c4e)
Raised 2270 for test failures.
**Chore:**
- Updated GoLeakDetector to ignore a specific function known for holding resources in an expected manner.
> Here's to the code that's lean and neat, π₯
> With every leak that we defeat. π
> Ignoring functions, oh so wise, π§
> For better software is the prize. π
restructure concept docs (2055)
**Release Notes**
- **Documentation**: Updated various URLs and links in the
documentation, introduced new features such as Control Point concept
documentation, Auto Scaler, and Pod Scaler components. Renamed "Aperture
Agent" to "Aperture agent" for consistency.
- **Refactor**: Added a new label `InfraMeterNameLabel` for infra meter
name in resources, and updated comments for `PolicyNameLabel` and
`PolicyHashLabel`. The key used for labeling an infrastructure meter is
now using a constant instead of a hardcoded string.
> π With every link that's been fixed,
> Our docs are now perfectly mixed.
> New labels shine bright,
> In the codebase's night,
> And hardcoding is finally nixed! π
---------
Co-authored-by: Karanbir Sohi <karanbir.sohifluxninja.com>
Co-authored-by: Tanveer Gill <tanveer.gillfluxninja.com>
Allow previewing decisions via aperturectl (2264)
Description of change
$ ./cmd/aperturectl/aperturectl decisions --decision-type="load_scheduler" --kube
agent_group-default-policy-service1-demo-app-component_id-root.0.10:
{
"commonAttributes": {
"policyName": "service1-demo-app",
"policyHash": "97VtZtWDlxuaXEaIBJnHB5BA8C2hVXkKPh7BBZOYF2k=",
"componentId": "root.0.10"
},
"loadDecision": {
"tickInfo": {
"timestamp": "2023-07-03T21:57:04.769116592Z",
"tick": "110",
"interval": "10s"
},
"loadMultiplier": 1.8500000000000005,
"tokensByWorkloadIndex": {
"default": "152",
"guest": "101",
"subscriber": "89"
}
}
}
$ ./cmd/aperturectl/aperturectl decisions --all --kube
rate_limiter/agent_group-default-policy-service1-demo-app-component_id-root.3:
{
"commonAttributes": {
"policyName": "service1-demo-app",
"policyHash": "97VtZtWDlxuaXEaIBJnHB5BA8C2hVXkKPh7BBZOYF2k=",
"componentId": "root.3"
},
"rateLimiterDecision": {
"bucketCapacity": 10,
"fillAmount": 10
}
}
load_scheduler/agent_group-default-policy-service1-demo-app-component_id-root.0.10:
{
"commonAttributes": {
"policyName": "service1-demo-app",
"policyHash": "97VtZtWDlxuaXEaIBJnHB5BA8C2hVXkKPh7BBZOYF2k=",
"componentId": "root.0.10"
},
"loadDecision": {
"tickInfo": {
"timestamp": "2023-07-03T21:57:24.770293754Z",
"tick": "112",
"interval": "10s"
},
"loadMultiplier": 1.9000000000000004,
"tokensByWorkloadIndex": {
"default": "152",
"guest": "101",
"subscriber": "89"
}
}
}
**New Feature**
- Introduced a new feature to the `aperturectl` command-line tool: the
`decisions` command. This command fetches and displays decisions made by
different system components from an etcd database.
- Added a new RPC method `GetDecisions` to the `Controller` service and
`PolicyService` service in protobuf definitions.
- Updated documentation with details and usage examples of the new
`aperturectl decisions` command.
> π A new command takes flight, `aperturectl decisions` in sight! π
> Fetching data, clear and bright, making our system's choices light! π‘
> With every decision in view, understanding grows anew. π±
> Celebrate this feature debut, for it's a step towards something huge!
π
Add missing labels to label whitelist (2265)
**New Feature:**
- Added four new labels to the metrics processor whitelist in the
OpenTelemetry Collector package. The new labels are
`ApertureQuotaSchedulersLabel`, `ApertureDroppingQuotaSchedulersLabel`,
`ApertureSamplersLabel`, and `ApertureDroppingSamplersLabel`.
> Four new labels, oh what a sight! π
> In our metrics, they ignite π₯
> Quota schedulers, samplers too,
> With more data, insights accrue. π
> Celebrate this code's flight, π
> For it brings us greater light. π‘
[changes]: https://github.com/fluxninja/aperture/compare/releases/aperture-controller/v2.7.0...releases/aperture-controller/v2.8.0-rc.1