File: Resources\EnvVarSourceV1.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>
/// EnvVarSourceV1 represents a source for an environment variable value in a Kubernetes resource.
/// It provides multiple options to derive the value of an environment variable, such as from
/// a specific key in a ConfigMap, a field reference within the resource, a resource field (e.g., CPU or memory usage),
/// or a specific key in a Secret.
/// </summary>
[YamlSerializable]
public sealed class EnvVarSourceV1
{
    /// <summary>
    /// ConfigMapKeyRef specifies a reference to a specific key within a Kubernetes ConfigMap.
    /// It allows configuring environment variables from a ConfigMap by selecting a key and its associated value.
    /// This property can be used for configuring your application with data stored in ConfigMaps, with the option to make the reference optional.
    /// </summary>
    [YamlMember(Alias = "configMapKeyRef")]
    public ConfigMapKeySelectorV1? ConfigMapKeyRef { get; set; }
 
    /// <summary>
    /// FieldRef specifies an ObjectFieldSelector which selects an APIVersioned
    /// field of an object. This can be used to extract specific pieces of
    /// information from object metadata or specification.
    /// </summary>
    [YamlMember(Alias = "fieldRef")]
    public ObjectFieldSelectorV1? FieldRef { get; set; }
 
    /// <summary>
    /// ResourceFieldRef is a property representing a reference to container resource fields, such as CPU or Memory.
    /// It leverages the ResourceFieldSelectorV1 type, which allows specification of container resource attributes and their output formats.
    /// </summary>
    [YamlMember(Alias = "resourceFieldRef")]
    public ResourceFieldSelectorV1? ResourceFieldRef { get; set; }
 
    /// <summary>
    /// SecretKeyRef defines a reference to a specific key within a Kubernetes Secret.
    /// It allows the user to map a particular secret key to an environment variable in a container.
    /// </summary>
    /// <remarks>
    /// This property is used to securely provide sensitive data, such as tokens or passwords, to an application.
    /// The referenced key must exist within the specified Secret, and an optional flag can dictate whether the absence
    /// of the key is tolerable.
    /// </remarks>
    [YamlMember(Alias = "secretKeyRef")]
    public SecretKeySelectorV1? SecretKeyRef { get; set; }
}