File: Resources\ServicePortV1.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 port configuration for a Kubernetes Service in API version V1.
/// </summary>
/// <remarks>
/// This class is used to configure the port settings for a Kubernetes Service.
/// It includes details used to define how the Service exposes ports and communicates with underlying pods.
/// </remarks>
[YamlSerializable]
public sealed class ServicePortV1
{
    /// <summary>
    /// Gets or sets the name of the service port. This is an optional identifier
    /// that can be used to distinguish between ports in cases where there are multiple
    /// ports defined. It must be a unique string within the service if specified.
    /// </summary>
    [YamlMember(Alias = "name")]
    public string Name { get; set; } = null!;
 
    /// <summary>
    /// Gets or sets the application protocol associated with the service port.
    /// This property can be used to define custom application layer protocols
    /// (e.g., HTTP, HTTPS) for traffic management and service communication.
    /// </summary>
    [YamlMember(Alias = "appProtocol")]
    public string AppProtocol { get; set; } = null!;
 
    /// <summary>
    /// Gets or sets the protocol used by the service, such as "TCP" or "UDP".
    /// </summary>
    [YamlMember(Alias = "protocol")]
    public string Protocol { get; set; } = null!;
 
    /// <summary>
    /// Gets or sets the port on the node where the service is exposed.
    /// This is used for NodePort services to specify the static port number
    /// on which the service is accessible on each selected node. If not set,
    /// a port will be automatically assigned from the NodePort range determined
    /// by the system.
    /// </summary>
    [YamlMember(Alias = "nodePort")]
    public int? NodePort { get; set; }
 
    /// <summary>
    /// Represents the port number that the service will expose.
    /// This value specifies the port on which the service is accessible.
    /// </summary>
    [YamlMember(Alias = "port")]
    public Int32OrStringV1 Port { get; set; } = null!;
 
    /// <summary>
    /// Specifies the port on the target container to which traffic should be directed.
    /// Typically used in Kubernetes Service definitions to map incoming traffic to the appropriate port of the application running in a pod.
    /// </summary>
    [YamlMember(Alias = "targetPort")]
    public Int32OrStringV1 TargetPort { get; set; } = null!;
}