File: Resources\EnvVarV1.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>
/// EnvVarV1 represents an environment variable in a Kubernetes resource.
/// It is used to define key-value pairs or to derive values from other Kubernetes resources
/// through a configurable source.
/// </summary>
/// <remarks>
/// EnvVarV1 contains properties to define the name and value of the environment variable directly,
/// or to set the value dynamically using a source, such as a ConfigMap, Secret, or Field reference.
/// </remarks>
[YamlSerializable]
public sealed class EnvVarV1
{
    /// <summary>
    /// Gets or sets the name of the environment variable.
    /// This property specifies the name of the environment variable and is a required field.
    /// </summary>
    [YamlMember(Alias = "name")]
    public string Name { get; set; } = null!;
 
    /// <summary>
    /// Gets or sets the literal value of the environment variable.
    /// This property is used to specify a constant string value that will be set directly
    /// as the environment variable's value in the container configuration.
    /// </summary>
    [YamlMember(Alias = "value")]
    public string Value { get; set; } = null!;
 
    /// <summary>
    /// Gets or sets the source for the environment variable value.
    /// This property allows specifying an external source from which the environment variable value
    /// will be derived, such as a key in a ConfigMap, a field reference from the object's metadata,
    /// a resource field (e.g., limits or requests for memory or CPU), or a key in a Secret.
    /// </summary>
    [YamlMember(Alias = "valueFrom")]
    public EnvVarSourceV1? ValueFrom { get; set; }
}