Skip to content
Notifications
Clear all

Rolled out Aqua Security to 300 users across 5 clusters - what broke

2 Posts
2 Users
0 Reactions
27 Views
(@carlj)
Reputable Member
Joined: 3 months ago
Posts: 351
Topic starter   [#21644]

After championing the adoption of Aqua Security to address our container and Kubernetes security posture across a heterogeneous environment, the rollout to our five production clusters (a mix of on-prem OpenShift and cloud EKS) has concluded. The technical implementation, while largely successful from a pure deployment perspective, surfaced several significant operational fractures that directly impacted developer workflow, cluster performance, and our SRE team's capacity. This post serves as a critical, evidence-based review of the pitfalls encountered, moving beyond vendor feature lists.

The primary breakage occurred in three distinct categories: agent performance overhead, alert fatigue from default policies, and integration brittleness.

**1. Agent Resource Consumption & Network Latency**
The DaemonSet and Enforcer components introduced a non-trivial resource footprint that was poorly documented for our specific workload profiles. While the vendor's "low single-digit percent" CPU claim held in idle tests, under sustained image scanning and runtime policy evaluation, we observed consistent spikes.

* **CPU Throttling:** On our node pools running high-throughput batch processing jobs, the Aqua agent CPU requests/limits were routinely breached, causing job slowdowns. We had to empirically derive our own limits.
* **Network Policy Collisions:** Aqua's network scanning requires specific `Egress` rules. Our existing, finely-tuned Calico network policies conflicted, causing intermittent scan failures that were silent unless deep pod logs were examined. The troubleshooting cycle here was approximately 14 engineer-hours per cluster.

**2. Default Policy Overload & Noisy Alerting**
Out-of-the-box, Aqua comes with hundreds of enabled policies. Enabling them wholesale, as suggested in the "comprehensive" deployment guide, immediately flooded our SIEM and Slack channels with thousands of alerts, 85% of which were informational (e.g., "Package update available in base image").

* The critical signal (e.g., unexpected process execution, suspicious port activity) was drowned out.
* This led to developer backlash, as they were pinged for "vulnerabilities" in development/test images that had no external exposure. We were forced to undertake a massive, two-week policy customization project *after* go-live, categorizing policies by environment, severity, and workload criticality. The policy-as-code management for this across five clusters remains cumbersome.

**3. API & Integration Instability**
Our automation relies heavily on Terraform and the Aqua API for user onboarding and registry scanning integration. We encountered several issues:

* The API's pagination and rate limiting were inconsistent, causing our Terraform provider runs to fail unpredictably when managing hundreds of users.
* The webhook integrations for Jira ticket creation would fail silently on certain alert payloads, due to a mismatch in the documented schema and the actual JSON structure.

```json
// Documented "image" field:
"image": "registry.example.com/app:1.0"

// Actual payload received (null registry field):
"image": {
"registry": null,
"repository": "registry.example.com/app",
"tag": "1.0"
}
```
This null value caused our parsing logic to break, a significant oversight in validation on Aqua's part.

**Cost and Scaling Implications**
The per-node licensing model, combined with the observed resource overhead, has forced a re-evaluation of our node autoscaling thresholds and has tangibly increased our cloud infrastructure bill for the EKS clusters. The operational cost of managing the policy suite and troubleshooting scan failures must be factored into the TCO, which is rarely discussed in sales conversations.

In summary, the platform is powerful but demands a carefully phased, critically-tuned rollout. The default configurations are unsuitable for production at scale. I am interested in hearing from other teams who have navigated similar scaling challenges, specifically regarding their approaches to policy lifecycle management and agent performance profiling in dense Kubernetes environments.


Trust but verify.


   
Quote
(@devops_shift_worker)
Reputable Member
Joined: 4 months ago
Posts: 290
 

Oh, the "low single-digit percent" claim. Heard that one before, around 2am while watching node metrics bleed.

It's never the idle, it's the scan queue. When a bunch of jobs kick off simultaneously and the scanner starts pulling layers, that's when the DaemonSet decides it needs a whole core to itself. We ended up writing a small mutating webhook to add resource requests/limits *for* the Aqua components, because their default manifests were... optimistic.

The network latency hit on the image pulls was the real kicker, though. Especially on the on-prem OpenShift clusters pulling from external registries. Added a solid 30-40 seconds to our CI pipeline until we got the scanner cache properly tuned. Classic.


NightOps


   
ReplyQuote