CostOptimization Class¶
The CostOptimization
class provides comprehensive cost optimization capabilities for Kubernetes workloads. It includes resource optimization, spot instance management, autoscaling strategies, and cost analysis tools.
Overview¶
from celestra import CostOptimization
# Basic cost optimization
cost_opt = CostOptimization("app-optimization").resource_optimization().spot_instance_recommendation()
# Production cost optimization
cost_opt = (CostOptimization("production-optimization")
.resource_optimization()
.spot_instance_recommendation()
.autoscaling_optimization()
.cost_analysis()
.budget_alerts())
Core API Functions¶
Resource Optimization¶
resource_optimization(enabled: bool = True) -> CostOptimization¶
Enable resource optimization analysis.
# Basic resource optimization
cost_opt = CostOptimization("app-optimization").resource_optimization()
# Disable resource optimization
cost_opt = CostOptimization("app-optimization").resource_optimization(False)
cpu_optimization(target_utilization: float = 0.7) -> CostOptimization¶
Optimize CPU resource allocation.
# Optimize CPU with 70% target utilization
cost_opt = CostOptimization("app-optimization").cpu_optimization(0.7)
# Conservative CPU optimization
cost_opt = CostOptimization("app-optimization").cpu_optimization(0.5)
memory_optimization(target_utilization: float = 0.8) -> CostOptimization¶
Optimize memory resource allocation.
# Optimize memory with 80% target utilization
cost_opt = CostOptimization("app-optimization").memory_optimization(0.8)
# Conservative memory optimization
cost_opt = CostOptimization("app-optimization").memory_optimization(0.6)
storage_optimization(compression: bool = True, deduplication: bool = True) -> CostOptimization¶
Optimize storage costs.
# Enable storage optimization
cost_opt = CostOptimization("app-optimization").storage_optimization()
# Custom storage optimization
cost_opt = CostOptimization("app-optimization").storage_optimization(
compression=True,
deduplication=True
)
network_optimization(bandwidth_optimization: bool = True) -> CostOptimization¶
Optimize network costs.
# Enable network optimization
cost_opt = CostOptimization("app-optimization").network_optimization()
# Disable bandwidth optimization
cost_opt = CostOptimization("app-optimization").network_optimization(False)
Spot Instance Management¶
spot_instance_recommendation(enabled: bool = True) -> CostOptimization¶
Enable spot instance recommendations.
# Enable spot instance recommendations
cost_opt = CostOptimization("app-optimization").spot_instance_recommendation()
# Disable spot instance recommendations
cost_opt = CostOptimization("app-optimization").spot_instance_recommendation(False)
spot_instance_strategy(strategy: str = "balanced") -> CostOptimization¶
Set spot instance strategy.
# Balanced strategy (default)
cost_opt = CostOptimization("app-optimization").spot_instance_strategy("balanced")
# Cost-optimized strategy
cost_opt = CostOptimization("app-optimization").spot_instance_strategy("cost-optimized")
# Availability-optimized strategy
cost_opt = CostOptimization("app-optimization").spot_instance_strategy("availability-optimized")
spot_instance_mix(spot_percentage: float = 0.5) -> CostOptimization¶
Set the percentage of spot instances in the workload.
# 50% spot instances
cost_opt = CostOptimization("app-optimization").spot_instance_mix(0.5)
# 80% spot instances for cost optimization
cost_opt = CostOptimization("app-optimization").spot_instance_mix(0.8)
# 20% spot instances for availability
cost_opt = CostOptimization("app-optimization").spot_instance_mix(0.2)
spot_instance_fallback(enabled: bool = True) -> CostOptimization¶
Enable fallback to on-demand instances when spot instances are unavailable.
# Enable fallback
cost_opt = CostOptimization("app-optimization").spot_instance_fallback(True)
# Disable fallback
cost_opt = CostOptimization("app-optimization").spot_instance_fallback(False)
Autoscaling Optimization¶
autoscaling_optimization(enabled: bool = True) -> CostOptimization¶
Enable autoscaling optimization.
# Enable autoscaling optimization
cost_opt = CostOptimization("app-optimization").autoscaling_optimization()
# Disable autoscaling optimization
cost_opt = CostOptimization("app-optimization").autoscaling_optimization(False)
horizontal_scaling_optimization(min_replicas: int = 1, max_replicas: int = 10) -> CostOptimization¶
Optimize horizontal pod autoscaling.
# Optimize HPA
cost_opt = CostOptimization("app-optimization").horizontal_scaling_optimization(1, 10)
# Conservative scaling
cost_opt = CostOptimization("app-optimization").horizontal_scaling_optimization(2, 5)
vertical_scaling_optimization(enabled: bool = True) -> CostOptimization¶
Enable vertical pod autoscaling optimization.
# Enable VPA optimization
cost_opt = CostOptimization("app-optimization").vertical_scaling_optimization(True)
# Disable VPA optimization
cost_opt = CostOptimization("app-optimization").vertical_scaling_optimization(False)
cluster_autoscaler_optimization(enabled: bool = True) -> CostOptimization¶
Enable cluster autoscaler optimization.
# Enable cluster autoscaler optimization
cost_opt = CostOptimization("app-optimization").cluster_autoscaler_optimization(True)
# Disable cluster autoscaler optimization
cost_opt = CostOptimization("app-optimization").cluster_autoscaler_optimization(False)
Cost Analysis¶
cost_analysis(enabled: bool = True) -> CostOptimization¶
Enable cost analysis and reporting.
# Enable cost analysis
cost_opt = CostOptimization("app-optimization").cost_analysis()
# Disable cost analysis
cost_opt = CostOptimization("app-optimization").cost_analysis(False)
cost_breakdown(breakdown_by: List[str] = None) -> CostOptimization¶
Configure cost breakdown analysis.
# Default cost breakdown
cost_opt = CostOptimization("app-optimization").cost_breakdown()
# Custom cost breakdown
cost_opt = CostOptimization("app-optimization").cost_breakdown([
"namespace", "pod", "service", "storage"
])
cost_forecasting(forecast_period: str = "30d") -> CostOptimization¶
Enable cost forecasting.
# 30-day cost forecast
cost_opt = CostOptimization("app-optimization").cost_forecasting("30d")
# 90-day cost forecast
cost_opt = CostOptimization("app-optimization").cost_forecasting("90d")
cost_anomaly_detection(enabled: bool = True) -> CostOptimization¶
Enable cost anomaly detection.
# Enable anomaly detection
cost_opt = CostOptimization("app-optimization").cost_anomaly_detection(True)
# Disable anomaly detection
cost_opt = CostOptimization("app-optimization").cost_anomaly_detection(False)
Budget Management¶
budget_alerts(budget_limit: float = None, alert_threshold: float = 0.8) -> CostOptimization¶
Configure budget alerts.
# Default budget alerts
cost_opt = CostOptimization("app-optimization").budget_alerts()
# Custom budget alerts
cost_opt = CostOptimization("app-optimization").budget_alerts(
budget_limit=1000.0,
alert_threshold=0.8
)
budget_limit(limit: float) -> CostOptimization¶
Set budget limit.
# Set $1000 monthly budget
cost_opt = CostOptimization("app-optimization").budget_limit(1000.0)
# Set $5000 monthly budget
cost_opt = CostOptimization("app-optimization").budget_limit(5000.0)
alert_threshold(threshold: float) -> CostOptimization¶
Set alert threshold percentage.
# Alert at 80% of budget
cost_opt = CostOptimization("app-optimization").alert_threshold(0.8)
# Alert at 90% of budget
cost_opt = CostOptimization("app-optimization").alert_threshold(0.9)
cost_optimization_schedule(schedule: str = "daily") -> CostOptimization¶
Set cost optimization schedule.
# Daily optimization
cost_opt = CostOptimization("app-optimization").cost_optimization_schedule("daily")
# Weekly optimization
cost_opt = CostOptimization("app-optimization").cost_optimization_schedule("weekly")
# Monthly optimization
cost_opt = CostOptimization("app-optimization").cost_optimization_schedule("monthly")
Instance Type Optimization¶
instance_type_optimization(enabled: bool = True) -> CostOptimization¶
Enable instance type optimization.
# Enable instance type optimization
cost_opt = CostOptimization("app-optimization").instance_type_optimization(True)
# Disable instance type optimization
cost_opt = CostOptimization("app-optimization").instance_type_optimization(False)
instance_type_recommendation(criteria: str = "cost") -> CostOptimization¶
Set instance type recommendation criteria.
# Cost-optimized recommendations
cost_opt = CostOptimization("app-optimization").instance_type_recommendation("cost")
# Performance-optimized recommendations
cost_opt = CostOptimization("app-optimization").instance_type_recommendation("performance")
# Balanced recommendations
cost_opt = CostOptimization("app-optimization").instance_type_recommendation("balanced")
reserved_instance_recommendation(enabled: bool = True) -> CostOptimization¶
Enable reserved instance recommendations.
# Enable reserved instance recommendations
cost_opt = CostOptimization("app-optimization").reserved_instance_recommendation(True)
# Disable reserved instance recommendations
cost_opt = CostOptimization("app-optimization").reserved_instance_recommendation(False)
Storage Optimization¶
storage_class_optimization(enabled: bool = True) -> CostOptimization¶
Enable storage class optimization.
# Enable storage class optimization
cost_opt = CostOptimization("app-optimization").storage_class_optimization(True)
# Disable storage class optimization
cost_opt = CostOptimization("app-optimization").storage_class_optimization(False)
storage_retention_optimization(enabled: bool = True) -> CostOptimization¶
Enable storage retention optimization.
# Enable storage retention optimization
cost_opt = CostOptimization("app-optimization").storage_retention_optimization(True)
# Disable storage retention optimization
cost_opt = CostOptimization("app-optimization").storage_retention_optimization(False)
backup_optimization(enabled: bool = True) -> CostOptimization¶
Enable backup cost optimization.
# Enable backup optimization
cost_opt = CostOptimization("app-optimization").backup_optimization(True)
# Disable backup optimization
cost_opt = CostOptimization("app-optimization").backup_optimization(False)
Network Optimization¶
network_cost_optimization(enabled: bool = True) -> CostOptimization¶
Enable network cost optimization.
# Enable network cost optimization
cost_opt = CostOptimization("app-optimization").network_cost_optimization(True)
# Disable network cost optimization
cost_opt = CostOptimization("app-optimization").network_cost_optimization(False)
data_transfer_optimization(enabled: bool = True) -> CostOptimization¶
Enable data transfer cost optimization.
# Enable data transfer optimization
cost_opt = CostOptimization("app-optimization").data_transfer_optimization(True)
# Disable data transfer optimization
cost_opt = CostOptimization("app-optimization").data_transfer_optimization(False)
Advanced Configuration¶
namespace(namespace: str) -> CostOptimization¶
Set the namespace for cost optimization components.
add_label(key: str, value: str) -> CostOptimization¶
Add a label to cost optimization components.
add_labels(labels: Dict[str, str]) -> CostOptimization¶
Add multiple labels to cost optimization components.
labels = {
"environment": "production",
"team": "platform",
"tier": "cost-optimization"
}
cost_opt = CostOptimization("app-optimization").add_labels(labels)
add_annotation(key: str, value: str) -> CostOptimization¶
Add an annotation to cost optimization components.
add_annotations(annotations: Dict[str, str]) -> CostOptimization¶
Add multiple annotations to cost optimization components.
annotations = {
"description": "Cost optimization for production",
"owner": "platform-team",
"optimization-schedule": "daily"
}
cost_opt = CostOptimization("app-optimization").add_annotations(annotations)
optimization_reporting(enabled: bool = True) -> CostOptimization¶
Enable optimization reporting.
# Enable optimization reporting
cost_opt = CostOptimization("app-optimization").optimization_reporting(True)
# Disable optimization reporting
cost_opt = CostOptimization("app-optimization").optimization_reporting(False)
cost_savings_tracking(enabled: bool = True) -> CostOptimization¶
Enable cost savings tracking.
# Enable cost savings tracking
cost_opt = CostOptimization("app-optimization").cost_savings_tracking(True)
# Disable cost savings tracking
cost_opt = CostOptimization("app-optimization").cost_savings_tracking(False)
Output Generation¶
generate() -> CostOptimizationGenerator¶
Generate the cost optimization configuration.
# Generate Kubernetes YAML
cost_opt.generate().to_yaml("./k8s/")
# Generate cost analysis report
cost_opt.generate().to_cost_report("./reports/")
# Generate optimization recommendations
cost_opt.generate().to_recommendations("./recommendations/")
Complete Example¶
Here's a complete example of a production-ready cost optimization setup:
from celestra import CostOptimization
# Create comprehensive cost optimization configuration
cost_opt = (CostOptimization("production-optimization")
.resource_optimization(True)
.cpu_optimization(target_utilization=0.7)
.memory_optimization(target_utilization=0.8)
.storage_optimization(compression=True, deduplication=True)
.network_optimization(bandwidth_optimization=True)
.spot_instance_recommendation(True)
.spot_instance_strategy("balanced")
.spot_instance_mix(spot_percentage=0.5)
.spot_instance_fallback(True)
.autoscaling_optimization(True)
.horizontal_scaling_optimization(min_replicas=1, max_replicas=10)
.vertical_scaling_optimization(True)
.cluster_autoscaler_optimization(True)
.cost_analysis(True)
.cost_breakdown(["namespace", "pod", "service", "storage"])
.cost_forecasting(forecast_period="30d")
.cost_anomaly_detection(True)
.budget_alerts(budget_limit=5000.0, alert_threshold=0.8)
.cost_optimization_schedule("daily")
.instance_type_optimization(True)
.instance_type_recommendation("cost")
.reserved_instance_recommendation(True)
.storage_class_optimization(True)
.storage_retention_optimization(True)
.backup_optimization(True)
.network_cost_optimization(True)
.data_transfer_optimization(True)
.namespace("cost-optimization")
.add_labels({
"environment": "production",
"team": "platform",
"tier": "cost-optimization"
})
.add_annotations({
"description": "Production cost optimization",
"owner": "platform-team@company.com",
"optimization-schedule": "daily"
})
.optimization_reporting(True)
.cost_savings_tracking(True))
# Generate manifests and reports
cost_opt.generate().to_yaml("./k8s/")
cost_opt.generate().to_cost_report("./reports/")
cost_opt.generate().to_recommendations("./recommendations/")
Cost Optimization Strategies¶
Resource Optimization Strategy¶
# Conservative resource optimization
conservative_opt = (CostOptimization("conservative-optimization")
.cpu_optimization(0.5)
.memory_optimization(0.6)
.resource_optimization(True))
Spot Instance Strategy¶
# Aggressive spot instance usage
aggressive_spot = (CostOptimization("aggressive-spot")
.spot_instance_recommendation(True)
.spot_instance_strategy("cost-optimized")
.spot_instance_mix(0.8)
.spot_instance_fallback(True))
Autoscaling Strategy¶
# Optimized autoscaling
autoscaling_opt = (CostOptimization("autoscaling-optimization")
.autoscaling_optimization(True)
.horizontal_scaling_optimization(2, 8)
.vertical_scaling_optimization(True)
.cluster_autoscaler_optimization(True))
Budget Management Strategy¶
# Strict budget management
budget_management = (CostOptimization("budget-management")
.budget_alerts(budget_limit=1000.0, alert_threshold=0.7)
.cost_analysis(True)
.cost_anomaly_detection(True)
.cost_forecasting("30d"))
Best Practices¶
1. Start with Resource Optimization¶
# ✅ Good: Start with resource optimization
cost_opt = CostOptimization("app-optimization").resource_optimization(True)
# ❌ Bad: Skip resource optimization
cost_opt = CostOptimization("app-optimization") # No resource optimization
2. Use Balanced Spot Instance Strategy¶
# ✅ Good: Use balanced spot instance strategy
cost_opt = CostOptimization("app-optimization").spot_instance_strategy("balanced")
# ❌ Bad: Use aggressive strategy without fallback
cost_opt = CostOptimization("app-optimization").spot_instance_strategy("cost-optimized").spot_instance_fallback(False)
3. Set Budget Alerts¶
# ✅ Good: Set budget alerts
cost_opt = CostOptimization("app-optimization").budget_alerts(budget_limit=1000.0, alert_threshold=0.8)
# ❌ Bad: No budget monitoring
cost_opt = CostOptimization("app-optimization") # No budget alerts
4. Enable Cost Analysis¶
# ✅ Good: Enable cost analysis
cost_opt = CostOptimization("app-optimization").cost_analysis(True).cost_breakdown()
# ❌ Bad: No cost analysis
cost_opt = CostOptimization("app-optimization") # No cost analysis
5. Use Appropriate Target Utilization¶
# ✅ Good: Use appropriate target utilization
cost_opt = CostOptimization("app-optimization").cpu_optimization(0.7).memory_optimization(0.8)
# ❌ Bad: Use unrealistic target utilization
cost_opt = CostOptimization("app-optimization").cpu_optimization(0.95).memory_optimization(0.95)
6. Enable Anomaly Detection¶
# ✅ Good: Enable anomaly detection
cost_opt = CostOptimization("app-optimization").cost_anomaly_detection(True)
# ❌ Bad: No anomaly detection
cost_opt = CostOptimization("app-optimization") # No anomaly detection
Related Components¶
- App - For stateless applications
- StatefulApp - For stateful applications
- Observability - For monitoring and metrics
- Service - For service discovery
- Ingress - For external access
Next Steps¶
- Observability - Learn about monitoring and observability
- Components Overview - Explore all available components
- Examples - See real-world examples
- Tutorials - Step-by-step guides