KubernetesIngressExtensions Methods
ClassMethods13 members
Provides extension methods for configuring Kubernetes Ingress resources in the Aspire application model.
AddIngress(IResourceBuilder<KubernetesEnvironmentResource>, string)Section titled AddIngress(IResourceBuilder<KubernetesEnvironmentResource>, string)extensionIResourceBuilder<KubernetesIngressResource> Adds a Kubernetes Ingress resource to the application model as a child of the specified Kubernetes environment. The ingress generates a
networking.k8s.io/v1 Ingress resource in the Helm chart output at publish time. public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> AddIngress( this IResourceBuilder<KubernetesEnvironmentResource> builder, string name) { // ... }}Parameters
builderIResourceBuilder<KubernetesEnvironmentResource>The Kubernetes environment resource builder.namestringThe name of the ingress resource. This is used as the Kubernetes resource name.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Remarks
After creating the ingress, configure path-based rules using KubernetesIngressExtensions.WithPath and optionally set an ingress class with KubernetesIngressExtensions.WithIngressClass.
Examples
var k8s = builder.AddKubernetesEnvironment("k8s");var ingress = k8s.AddIngress("public") .WithIngressClass("nginx");
var api = builder.AddProject<MyApi>("api");ingress.WithPath("/api", api.GetEndpoint("http"));WithDefaultBackend(IResourceBuilder<KubernetesIngressResource>, EndpointReference)Section titled WithDefaultBackend(IResourceBuilder<KubernetesIngressResource>, EndpointReference)extensionIResourceBuilder<KubernetesIngressResource> Sets the default backend for the ingress. The default backend handles requests that do not match any of the defined routing rules.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithDefaultBackend( this IResourceBuilder<KubernetesIngressResource> builder, EndpointReference endpoint) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.endpointEndpointReferenceThe endpoint reference identifying the default backend service and port.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Remarks
Kubernetes default backends remain catch-all even when hostnames are configured. Use host-specific path rules when traffic must be restricted by hostname.
WithHostname(IResourceBuilder<KubernetesIngressResource>, string)Section titled WithHostname(IResourceBuilder<KubernetesIngressResource>, string)extensionIResourceBuilder<KubernetesIngressResource> Adds a hostname that this ingress matches. Multiple hostnames can be added by calling this method repeatedly. Path rules without an explicit host apply to each configured hostname. If no hostnames are configured, those rules match all hosts.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithHostname( this IResourceBuilder<KubernetesIngressResource> builder, string hostname) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.hostnamestringThe hostname to match (e.g., "api.example.com").Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Examples
ingress.WithHostname("api.example.com") .WithHostname("www.example.com");WithHostname(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)Section titled WithHostname(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<KubernetesIngressResource> Adds a hostname using a parameter that will be resolved at deploy time.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithHostname( this IResourceBuilder<KubernetesIngressResource> builder, IResourceBuilder<ParameterResource> hostname) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.hostnameIResourceBuilder<ParameterResource>A parameter resource builder for the hostname value.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, string)Section titled WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, string)extensionIResourceBuilder<KubernetesIngressResource> Adds a Kubernetes metadata annotation to the generated Ingress resource. These are key-value pairs in the
metadata.annotations field of the K8S Ingress, commonly used to configure ingress controller-specific behavior. public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithIngressAnnotation( this IResourceBuilder<KubernetesIngressResource> builder, string key, string value) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.keystringThe annotation key (e.g., "nginx.ingress.kubernetes.io/rewrite-target").valuestringThe annotation value.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Remarks
This method sets Kubernetes metadata annotations, not Aspire
ApplicationModel.IResourceAnnotation instances. Use these for controller-specific features like path rewriting, rate limiting, CORS configuration, or SSL redirect behavior. Examples
ingress.WithIngressAnnotation("nginx.ingress.kubernetes.io/rewrite-target", "/$1");ingress.WithIngressAnnotation("nginx.ingress.kubernetes.io/ssl-redirect", "true");WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, IResourceBuilder<ParameterResource>)Section titled WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<KubernetesIngressResource> Adds a Kubernetes metadata annotation with a parameter value that will be resolved at deploy time.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithIngressAnnotation( this IResourceBuilder<KubernetesIngressResource> builder, string key, IResourceBuilder<ParameterResource> value) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.keystringThe annotation key.valueIResourceBuilder<ParameterResource>A parameter resource builder for the annotation value.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithIngressClass(IResourceBuilder<KubernetesIngressResource>, string)Section titled WithIngressClass(IResourceBuilder<KubernetesIngressResource>, string)extensionIResourceBuilder<KubernetesIngressResource> Sets the Kubernetes ingress class name that selects which ingress controller handles this ingress resource.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithIngressClass( this IResourceBuilder<KubernetesIngressResource> builder, string className) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.classNamestringThe ingress class name (e.g., "nginx", "traefik", "azure-alb-external").Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithIngressClass(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)Section titled WithIngressClass(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<KubernetesIngressResource> Sets the Kubernetes ingress class name using a parameter that will be resolved at deploy time.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithIngressClass( this IResourceBuilder<KubernetesIngressResource> builder, IResourceBuilder<ParameterResource> className) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.classNameIResourceBuilder<ParameterResource>A parameter resource builder for the ingress class name.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithPath(IResourceBuilder<KubernetesIngressResource>, string, EndpointReference, IngressPathType)Section titled WithPath(IResourceBuilder<KubernetesIngressResource>, string, EndpointReference, IngressPathType)extensionIResourceBuilder<KubernetesIngressResource> Adds a path-based rule to the ingress. The rule matches each hostname configured with
KubernetesIngressExtensions.WithHostname, or all hosts when no hostname is configured, and forwards matching traffic to the endpoint's backing Kubernetes service. public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithPath( this IResourceBuilder<KubernetesIngressResource> builder, string path, EndpointReference endpoint, IngressPathType pathType = IngressPathType.Prefix) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.pathstringThe URL path to match (e.g., "/" or "/api"). Must start with /.endpointEndpointReferenceThe endpoint reference identifying the target service and port.pathTypeIngressPathTypeoptionalThe path matching strategy. Defaults to IngressPathType.Prefix.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Examples
var api = builder.AddProject<MyApi>("api");ingress.WithPath("/api", api.GetEndpoint("http"));WithPath(IResourceBuilder<KubernetesIngressResource>, string, string, EndpointReference, IngressPathType)Section titled WithPath(IResourceBuilder<KubernetesIngressResource>, string, string, EndpointReference, IngressPathType)extensionIResourceBuilder<KubernetesIngressResource> Adds a host-scoped path rule to the ingress. The rule matches traffic for the specified host and path, forwarding it to the given endpoint's backing Kubernetes service.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithPath( this IResourceBuilder<KubernetesIngressResource> builder, string host, string path, EndpointReference endpoint, IngressPathType pathType = IngressPathType.Prefix) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.hoststringThe hostname to match (e.g., "api.example.com").pathstringThe URL path to match (e.g., "/" or "/api"). Must start with /.endpointEndpointReferenceThe endpoint reference identifying the target service and port.pathTypeIngressPathTypeoptionalThe path matching strategy. Defaults to IngressPathType.Prefix.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.Examples
var api = builder.AddProject<MyApi>("api");ingress.WithPath("api.example.com", "/", api.GetEndpoint("http"));WithTls(IResourceBuilder<KubernetesIngressResource>, string)Section titled WithTls(IResourceBuilder<KubernetesIngressResource>, string)extensionIResourceBuilder<KubernetesIngressResource> Configures TLS termination for the ingress by referencing a Kubernetes TLS secret. The TLS configuration applies to all hostnames configured via
KubernetesIngressExtensions.WithHostname. public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithTls( this IResourceBuilder<KubernetesIngressResource> builder, string secretName) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.secretNamestringThe name of the Kubernetes kubernetes.io/tls Secret.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithTls(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)Section titled WithTls(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<KubernetesIngressResource> Configures TLS termination using a parameter for the secret name.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithTls( this IResourceBuilder<KubernetesIngressResource> builder, IResourceBuilder<ParameterResource> secretName) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.secretNameIResourceBuilder<ParameterResource>A parameter resource builder for the secret name.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.WithTls(IResourceBuilder<KubernetesIngressResource>)Section titled WithTls(IResourceBuilder<KubernetesIngressResource>)extensionIResourceBuilder<KubernetesIngressResource> Configures TLS termination with an auto-generated secret name derived from the ingress name.
public static class KubernetesIngressExtensions{ public static IResourceBuilder<KubernetesIngressResource> WithTls( this IResourceBuilder<KubernetesIngressResource> builder) { // ... }}Parameters
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.Returns
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.