Changelog
List of aperture PRs merged since 1.4.0 release. For the full list of changes, see [list of changes][changes]
support defaults on maps (1790)
refactor flowcontrol engine (1776)
Don't pass metric deletion error in circuit (1774)
We delete some metrics for invalid readings. So they get deleted twice.
Deleting a deleted metric is not bad, so we can just handle this and log
in setup.
Bug fix
- Improved error handling in circuit setup function by logging errors
during metrics deletion and returning nil instead of multi-error when no
errors are present.
> π Oh, rejoice, for we have caught the bug! π
> In circuit setup, it hid snug. πΏ
> With better logs, we now unveil π
> The errors that once made us fail. πͺ
Fixed certificate issues on Operator restarts (1770)
Description of change
This change persists the certificates generated by the Operator for
webhooks and Controller so that we don't see the certificate errors
during upgrades or operator pod restarts.
Fixes 1694
**Bug fix:**
- Persist certificates generated by the Operator for webhooks and
Controller to prevent certificate issues on restarts
**Documentation:**
- Update installation documentation to reflect certificate persistence
changes
**Refactor:**
- Improve code readability and maintainability
> π Certificates persist, no more errors resist! π
> With docs updated, and code refactored,
> Our Operator's journey, now unencumbered. π
Update policy and dynamic-config APIs (1767)
Description of change
- Update etcd calls to be blocking using `etcdClient` directly
- Move away from adding/updating multiple policies and dynamic-configs
in a single call
- Combine a POST and PATCH into 1 call, by using
`google.protobuf.FieldMask`, still keeping both methods and backwards
compatibility with `aperturectl`
- Add FieldMask related helper functions in utils
- Replace "no matches for kind" string check with
`k8s.io/apimachinery/pkg/api/meta` errors check
**New Feature:**
- Combine POST and PATCH into a single call using
`google.protobuf.FieldMask`
- Add FieldMask helper functions in the `utils` package
**Refactor:**
- Update etcd calls to be blocking
- Simplify policy and dynamic-config updates by separating them
- Improve error handling with `k8s.io/apimachinery/pkg/api/meta` errors
check
> π A merge of POST and PATCH we see, π
> With FieldMask helpers, oh so nifty! π οΈ
> Etcd calls now block, as they should, β±οΈ
> And error checks improved, all understood. π
Namespace scoped installation (1764)
Description of change
This PR contains all the changes required for running agent and
controller in namespace scoped:
- Option in Agent and Controller helm chart to install only namespace
scoped installation
- aperturectl support for installation in namespace scoped
- Disable Policy CR watcher conditionally in Controller
- Policy Post and Delete APIs for managing policies
Fixes 1692
Default Playground SS:
![image](https://user-images.githubusercontent.com/34568645/231963724-9dca44b8-d88a-46c6-aeb4-920568b0cb6f.png)
Aperture Running in namespace scoped SS with Envoy:
![image](https://user-images.githubusercontent.com/34568645/232030633-f40d66ef-c77f-445b-a78f-1ae0c3823da7.png)
**New Feature:**
- Namespace-scoped installation of Aperture Agent and Controller
- New APIs for managing policies and dynamic configs
- Conditional disabling of Policy CR watcher in Controller
- `aperturectl delete` command for deleting policies
**Documentation:**
- Updated documentation for new installation modes, APIs, and commands
> π Namespace-scoped, we now install,
> With new APIs, our features fulfill.
> Policies managed, with ease and grace,
> Aperture's updates, we embrace! π
---------
Co-authored-by: Hasit Mistry <hasitfluxninja.com>
GRPC -> gRPC (1762)
Fix metrics (1759)
scheduler: rely on client timeouts (1757)
Description of change
Scheduler logic is changed to ignore the existing `timeout_factor` and
`max_timeout` fields. Instead, the Check() call's client must decide the
timeout for each request. To work with fail-open design of Aperture
clients, `decision_deadline_margin` parameter is added instead.
**New Feature:**
- Rely on client timeouts for scheduler logic
- Add `decision_deadline_margin` parameter for fail-open design
**Refactor:**
- Remove unused imports and minor modifications in load generator test
files
> π A new dawn for scheduling, we embrace,
> π Client timeouts now lead the race.
> β±οΈ With margins set, decisions are wise,
> π§Ή Cleaned up imports, a welcomed surprise!
[changes]: https://github.com/fluxninja/aperture/compare/releases/aperture-controller/v1.4.0...releases/aperture-controller/v1.5.0