in controllers/master_reconcile.go [146:191]
func (r *DSMasterReconciler) createHPA(cluster *dsv1alpha1.DSMaster) *v2beta2.HorizontalPodAutoscaler {
hpa := v2beta2.HorizontalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Name: dsv1alpha1.DsWorkerHpa,
Namespace: cluster.Namespace,
ResourceVersion: dsv1alpha1.DSVersion,
},
Spec: v2beta2.HorizontalPodAutoscalerSpec{
ScaleTargetRef: v2beta2.CrossVersionObjectReference{
Kind: dsv1alpha1.DsWorkerKind,
Name: dsv1alpha1.DsWorkerLabel,
APIVersion: dsv1alpha1.APIVersion,
},
MinReplicas: &cluster.Spec.HpaPolicy.MinReplicas,
MaxReplicas: cluster.Spec.HpaPolicy.MaxReplicas,
},
}
if cluster.Spec.HpaPolicy.CPUAverageUtilization > 0 {
hpa.Spec.Metrics = append(hpa.Spec.Metrics, v2beta2.MetricSpec{
Type: v2beta2.ResourceMetricSourceType,
Resource: &v2beta2.ResourceMetricSource{
Name: corev1.ResourceCPU,
Target: v2beta2.MetricTarget{
Type: v2beta2.UtilizationMetricType,
AverageUtilization: &cluster.Spec.HpaPolicy.CPUAverageUtilization,
},
},
})
}
if cluster.Spec.HpaPolicy.MEMAverageUtilization > 0 {
hpa.Spec.Metrics = append(hpa.Spec.Metrics, v2beta2.MetricSpec{
Type: v2beta2.ResourceMetricSourceType,
Resource: &v2beta2.ResourceMetricSource{
Name: corev1.ResourceMemory,
Target: v2beta2.MetricTarget{
Type: v2beta2.UtilizationMetricType,
AverageUtilization: &cluster.Spec.HpaPolicy.MEMAverageUtilization,
},
},
})
}
return &hpa
}