Custom Kubernetes operators that power Prophet's self-healing and AIOps capabilities.
| Operator | CRD | Purpose | Status |
|---|---|---|---|
| health-check | HealthCheck |
Multi-probe health monitoring | ✅ Production |
| budget-guard | BudgetGuard |
Cost budget enforcement | ✅ Production |
| cost-alert | CostAlert |
Cost anomaly alerting | ✅ Production |
| diagnostic-remediator | DiagnosticRemediation |
Application-specific remediation | ✅ Production |
| label-enforcer | LabelEnforcer |
Enforce required labels/annotations | ✅ Production |
- Go 1.22+
- Docker
- kubectl configured to a cluster
- (Optional) Tilt for live development
cd operators/anomaly-remediator
# Install dependencies and generate code
make generate manifests
# Run against current kubeconfig context
make runcd operators
tilt upThis starts all operators with live reload on code changes.
cd operators/anomaly-remediator
make docker-build docker-push IMG=your-registry/anomaly-remediator:latestEdit api/v1alpha1/*_types.go, then regenerate:
make generate manifestsmake testmake local-ci# Build Docker image
make docker-build docker-push IMG=ghcr.io/prophet-aiops/prophet-label-enforcer:v1.0.0
# Lint and package Helm chart
make helm-lint
make helm-package
# Test chart installation
make helm-template
make helm-install # In test environmentOperators can be deployed in multiple ways:
Each operator includes a production-ready Helm chart:
# Install via Helm
helm install prophet-label-enforcer operators/label-enforcer/helm/label-enforcer
helm install prophet-health-check operators/health-check/helm/health-check
# Customize with values
helm install prophet-label-enforcer operators/label-enforcer/helm/label-enforcer \
--set image.tag=v1.0.0 \
--set watchNamespace=defaultUse the provided overlays in clusters/common/aiops/operators/ or point your GitOps tool to the Helm charts.
Apply the generated manifests directly:
kubectl apply -f clusters/common/aiops/operators/health-check.yaml┌─────────────────────────────────────────────────────────────────┐
│ Prophet Control Plane │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Anomaly │ │ Predictive │ │ SLO │ │
│ │ Remediator │ │ Scaler │ │ Enforcer │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Kubernetes API Server │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Prometheus │ │ Grafana ML │ │ K8sGPT │ │
│ │ Metrics │ │ Forecasts │ │ Diagnostics │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
All Prophet CRDs use the aiops.prophet.io API group:
apiVersion: aiops.prophet.io/v1alpha1
kind: AnomalyActionEach operator exposes Prometheus metrics on :8080/metrics. Available metrics vary by operator.
kubectl logs -n prophet-operators -l control-plane=controller-manager -fkubectl get healthchecks,budgetguards,costalerts,diagnosticremediations,labelenforcers -A| Issue | Solution |
|---|---|
| CRD not found | make manifests && kubectl apply -f config/crd/bases/ |
| RBAC denied | Check ClusterRole/ClusterRoleBinding in operator manifest |
| Operator not reconciling | Check operator logs, verify webhook connectivity |