| File: Resources\SecretVolumeSourceV1.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> /// Represents a volume source based on a Kubernetes Secret. /// </summary> /// <remarks> /// This class allows configuring a Secret as the data source for a Kubernetes volume. /// The SecretVolumeSourceV1 can be used to specify the secret name, default /// access permissions, and specific key-to-path mappings for projecting the /// contents of the secret into the volume. It also allows specifying whether /// the configuration is optional. /// </remarks> [YamlSerializable] public sealed class SecretVolumeSourceV1 { /// <summary> /// Gets or sets the default file mode for files created in the volume. /// </summary> /// <remarks> /// The DefaultMode controls the permissions for files written into the volume /// when specific file modes are not explicitly defined for individual keys. /// The value is typically represented as an integer, expressing file permissions /// in bitmask notation (e.g., 0644). /// </remarks> [YamlMember(Alias = "defaultMode")] public int? DefaultMode { get; set; } /// <summary> /// Gets or sets the name of the Secret to be referenced as a volume. /// </summary> /// <remarks> /// The SecretName property specifies the name of a Kubernetes Secret resource /// to mount as a volume. This allows pods to access Secret data, such as sensitive /// information, in a filesystem-based layout. When a Secret is mounted as a volume, /// the key-value pairs within the Secret are projected as files. /// The property should contain the name of an existing Secret in the same namespace /// as the Pod. If the referenced Secret does not exist, the Pod will fail to /// instantiate unless the Optional property is set to true. /// </remarks> [YamlMember(Alias = "secretName")] public string SecretName { get; set; } = null!; /// <summary> /// Specifies whether the Secret or its keys must be defined. /// </summary> /// <remarks> /// If set to true, the Secret and its associated data are optional and may not exist. /// If set to false or not specified, the Secret is required, and its absence /// will result in an error or failure. /// </remarks> [YamlMember(Alias = "optional")] public bool? Optional { get; set; } /// <summary> /// Gets a list of key-to-path mappings that specify how individual keys within the secret /// should be projected into files within the volume. /// </summary> /// <remarks> /// Each entry in the list corresponds to a specific key in the referenced secret and maps it /// to a file within the volume. This property allows fine-grained control over which keys are /// included in the volume and their corresponding file paths. /// </remarks> [YamlMember(Alias = "items")] public List<KeyToPathV1> Items { get; } = []; }