# Recommendations

Source: https://docs.ops0.com/docs/iac/recommendations

ops0 analyses your IaC projects and connected cloud resources to generate actionable recommendations. These surface issues that aren't policy violations but represent risk, compliance gaps, or unnecessary cost.

---

## Viewing Recommendations

Recommendations appear in two places:

| Location | How to Access |
|----------|--------------|
| **Per project** | Open a project → click **Recommendations** in the toolbar |
| **Org-wide** | IaC home → **Recommendations** tab (shows all projects) |

Each project card on the IaC home screen also shows a recommendation count badge when issues exist.

---

## Recommendation Types

### Kubernetes Cluster Version EOL

ops0 checks whether EKS, GKE, AKS, or OKE clusters defined in your IaC projects are running Kubernetes versions that are at or near end-of-life.

| Severity | Condition |
|----------|-----------|
| **Critical** | Cluster version is already end-of-life |
| **Warning** | Cluster version reaches EOL within 90 days |
| **Info** | Cluster version is supported but extended support costs apply |

**Example recommendation:**

```
⚠ WARNING — EKS Cluster Version Approaching EOL

Resource:  aws_eks_cluster.production
Version:   Kubernetes 1.27
EOL Date:  2024-07-26

Standard support ends on 2024-07-26. After this date, the cluster
enters extended support at an additional $0.60/cluster/hour.

Recommended action: Upgrade to Kubernetes 1.29 or later before the EOL date.
```

### Tagging Compliance

ops0 checks whether resources managed by IaC projects have the expected ops0 management tags applied after deployment.

| Tag | Purpose |
|-----|---------|
| `ops0-managed` | Marks the resource as managed by ops0 |
| `ops0-conversationID` | Links the resource back to its IaC project |

Missing tags indicate a resource may have drifted out of ops0 management or was created outside the normal workflow.

**Example recommendation:**

```
ℹ INFO — Missing ops0 Management Tags

Resource:  aws_instance.web_server
Tags missing:
  - ops0-managed
  - ops0-conversationID

Recommended action: Redeploy the project to apply current tagging configuration,
or add tags manually and update your Terraform variables.tf.
```

### Cost Optimisation

Recommendations surface resources that may be over-provisioned or have cost-reduction opportunities:

- Idle compute instances (low CPU utilisation)
- Oversized RDS instances relative to connections
- Unused Elastic IPs
- Unattached EBS volumes

---

## Recommendation Detail

Click any recommendation to see full details:

| Field | Description |
|-------|-------------|
| **Title** | Short description of the issue |
| **Severity** | Critical / Warning / Info |
| **Resource** | The specific Terraform resource address |
| **Description** | Full explanation of the issue |
| **Recommended action** | Specific steps to resolve |
| **Extended support cost** | For EOL recommendations — estimated monthly cost if no action is taken |

---

## Acting on Recommendations

Recommendations are informational — they don't block deployments. To resolve a recommendation:

1. Review the recommended action in the detail panel
2. Open the linked IaC project
3. Make the code change (e.g. update `cluster_version`)
4. Deploy the change
5. The recommendation clears after the next analysis run

---

## Related

- [Incidents](https://docs.ops0.com/docs/iac/incidents): Automated incident creation for deployment failures and drift

- [Policy Checking](https://docs.ops0.com/docs/iac/deployments/policies): Enforce hard rules that block deployments

- [Kubernetes](https://docs.ops0.com/docs/kubernetes/overview): Manage Kubernetes clusters connected to ops0
