| File: Resources\HorizontalPodAutoscalerSpecV1.cs | Web Access |
| Project: src\src\Aspire.Hosting.Kubernetes\Aspire.Hosting.Kubernetes.csproj (Aspire.Hosting.Kubernetes) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using YamlDotNet.Serialization; namespace Aspire.Hosting.Kubernetes.Resources; /// <summary> /// Specifies the desired behavior of a Horizontal Pod Autoscaler in Kubernetes for the autoscaling/v1 version. /// </summary> /// <remarks> /// The HorizontalPodAutoscalerSpecV1 class defines the configuration for automatically scaling /// the number of pods based on observed metrics such as CPU utilization. It specifies the /// target resource to be scaled, the minimum and maximum number of replicas, and the desired /// CPU utilization threshold for scaling decisions. /// </remarks> [YamlSerializable] public sealed class HorizontalPodAutoscalerSpecV1 { /// <summary> /// Gets or sets the target CPU utilization percentage for the horizontal pod autoscaler. /// </summary> /// <remarks> /// This property defines the desired CPU utilization percentage threshold for the autoscaler to /// maintain. When the average CPU usage across the pods exceeds this value, additional replicas /// may be scaled up. Conversely, when the usage drops below this value, replicas may be scaled down. /// </remarks> [YamlMember(Alias = "targetCPUUtilizationPercentage")] public int? TargetCPUUtilizationPercentage { get; set; } /// <summary> /// Specifies the reference to the target object that the HorizontalPodAutoscaler is scaling. /// </summary> /// <remarks> /// The ScaleTargetRef property is a reference to the Kubernetes resource that the HorizontalPodAutoscaler /// will monitor and scale. This reference includes essential details about the target resource, such as /// its name and API version, encapsulated in a CrossVersionObjectReferenceV1 object. /// </remarks> [YamlMember(Alias = "scaleTargetRef")] public CrossVersionObjectReferenceV1 ScaleTargetRef { get; set; } = new(); /// <summary> /// Specifies the maximum allowed number of replicas for the target resource managed by the HorizontalPodAutoscaler. /// </summary> /// <remarks> /// The MaxReplicas property defines an upper limit on the number of replicas that can be created for the /// specified workload. This ensures that the scaling process does not exceed operational constraints /// or resource limits, even if usage metrics surpass thresholds. /// </remarks> [YamlMember(Alias = "maxReplicas")] public int MaxReplicas { get; set; } = 1; /// <summary> /// Gets or sets the minimum number of replicas that the HorizontalPodAutoscaler will maintain for the specified resource. /// </summary> /// <remarks> /// This property ensures that the targeted application maintains a guaranteed minimum level of scalability, /// preventing the number of replicas from falling below the specified value. Setting this value is optional /// and, if not set, the default value may rely on the Kubernetes configuration for the HorizontalPodAutoscaler. /// </remarks> [YamlMember(Alias = "minReplicas")] public int? MinReplicas { get; set; } }