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.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. If no hostnames are configured, the ingress matches 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 all hosts and forwards traffic matching the specified path to the given 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.