|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#pragma warning disable ASPIRECOMPUTE001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
using Aspire.Hosting.ApplicationModel;
namespace Aspire.Hosting.Kubernetes;
/// <summary>
/// Represents a Kubernetes environment resource that can host application resources.
/// </summary>
/// <remarks>
/// Initializes a new instance of the <see cref="KubernetesEnvironmentResource"/> class.
/// </remarks>
/// <param name="name">The name of the Kubernetes environment.</param>
public sealed class KubernetesEnvironmentResource(string name) : Resource(name), IComputeEnvironmentResource
{
/// <summary>
/// Gets or sets the name of the Helm chart to be generated.
/// </summary>
public string HelmChartName { get; set; } = "aspire";
/// <summary>
/// Gets or sets the version of the Helm chart to be generated.
/// This property specifies the version number that will be assigned to the Helm chart,
/// typically following semantic versioning conventions.
/// </summary>
public string HelmChartVersion { get; set; } = "0.1.0";
/// <summary>
/// Gets or sets the description of the Helm chart being generated.
/// </summary>
public string HelmChartDescription { get; set; } = "Aspire Helm Chart";
/// <summary>
/// Specifies the default type of storage used for Kubernetes deployments.
/// </summary>
/// <remarks>
/// This property determines the storage medium used for the application.
/// Possible values include "emptyDir", "hostPath", "pvc"
/// </remarks>
public string DefaultStorageType { get; set; } = "emptyDir";
/// <summary>
/// Specifies the default name of the storage class to be used for persistent volume claims in Kubernetes.
/// This property allows customization of the storage class for specifying storage requirements
/// such as performance, retention policies, and provisioning parameters.
/// If set to null, the default storage class for the cluster will be used.
/// </summary>
public string? DefaultStorageClassName { get; set; }
/// <summary>
/// Gets or sets the default storage size for persistent volumes.
/// </summary>
public string DefaultStorageSize { get; set; } = "1Gi";
/// <summary>
/// Gets or sets the default access policy for reading and writing to the storage.
/// </summary>
public string DefaultStorageReadWritePolicy { get; set; } = "ReadWriteOnce";
/// <summary>
/// Gets or sets the default policy that determines how Docker images are pulled during deployment.
/// Possible values are:
/// "Always" - Always attempt to pull the image from the registry.
/// "IfNotPresent" - Pull the image only if it is not already present locally.
/// "Never" - Never pull the image, use only the local image.
/// The default value is "IfNotPresent".
/// </summary>
public string DefaultImagePullPolicy { get; set; } = "IfNotPresent";
/// <summary>
/// Gets or sets the default Kubernetes service type to be used when generating artifacts.
/// </summary>
/// <remarks>
/// The default value is "ClusterIP". This property determines the type of service
/// (e.g., ClusterIP, NodePort, LoadBalancer) created in Kubernetes for the application.
/// </remarks>
public string DefaultServiceType { get; set; } = "ClusterIP";
}
|