Watch Aspire live streamsDocsTry Aspire
Watch Aspire live streamsDocsTry

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)
{
// ...
}
}
builderIResourceBuilder<KubernetesEnvironmentResource>The Kubernetes environment resource builder.
namestringThe name of the ingress resource. This is used as the Kubernetes resource name.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.

After creating the ingress, configure path-based rules using KubernetesIngressExtensions.WithPath and optionally set an ingress class with KubernetesIngressExtensions.WithIngressClass.

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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
endpointEndpointReferenceThe endpoint reference identifying the default backend service and port.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
hostnamestringThe hostname to match (e.g., "api.example.com").
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
hostnameIResourceBuilder<ParameterResource>A parameter resource builder for the hostname value.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
keystringThe annotation key (e.g., "nginx.ingress.kubernetes.io/rewrite-target").
valuestringThe annotation value.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.
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.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
keystringThe annotation key.
valueIResourceBuilder<ParameterResource>A parameter resource builder for the annotation value.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
classNamestringThe ingress class name (e.g., "nginx", "traefik", "azure-alb-external").
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
classNameIResourceBuilder<ParameterResource>A parameter resource builder for the ingress class name.
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)
{
// ...
}
}
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.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.
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)
{
// ...
}
}
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.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
secretNamestringThe name of the Kubernetes kubernetes.io/tls Secret.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
secretNameIResourceBuilder<ParameterResource>A parameter resource builder for the secret name.
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)
{
// ...
}
}
builderIResourceBuilder<KubernetesIngressResource>The ingress resource builder.
IResourceBuilder<KubernetesIngressResource>A reference to the ApplicationModel.IResourceBuilder`1 for chaining.