# KubernetesIngressExtensions Methods

- Package: [Aspire.Hosting.Kubernetes](/reference/api/csharp/aspire.hosting.kubernetes.md)
- Type: [KubernetesIngressExtensions](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesingressextensions.md)
- Kind: `Methods`
- Members: `13`

Provides extension methods for configuring Kubernetes Ingress resources in the Aspire application model.

## AddIngress(IResourceBuilder<KubernetesEnvironmentResource>, string)

- Name: `AddIngress(IResourceBuilder<KubernetesEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs#L44-L55)

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.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> AddIngress(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `name` (`string`)
  The 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 routes using [KubernetesIngressExtensions.WithRoute(IResourceBuilder<KubernetesIngressResource>, string, EndpointReference, IngressPathType)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesingressextensions/methods.md#withroute-iresourcebuilder-kubernetesingressresource-string-endpointreference-ingresspathtype) and optionally set an ingress class with [KubernetesIngressExtensions.WithIngressClass(IResourceBuilder<KubernetesIngressResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesingressextensions/methods.md#withingressclass-iresourcebuilder-kubernetesingressresource-string).

## Examples

```csharp
var k8s = builder.AddKubernetesEnvironment("k8s");
var ingress = k8s.AddIngress("public")
    .WithIngressClass("nginx");

var api = builder.AddProject<MyApi>("api");
ingress.WithRoute("/api", api.GetEndpoint("http"));
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDefaultBackend(IResourceBuilder<KubernetesIngressResource>, EndpointReference)

- Name: `WithDefaultBackend(IResourceBuilder<KubernetesIngressResource>, EndpointReference)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs#L297-L301)

Sets the default backend for the ingress. The default backend handles requests that do not match any of the defined routing rules.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithDefaultBackend(
        this IResourceBuilder<KubernetesIngressResource> builder,
        EndpointReference endpoint)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `endpoint` (`EndpointReference`)
  The endpoint reference identifying the default backend service and port.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithHostname(IResourceBuilder<KubernetesIngressResource>, string)

- Name: `WithHostname(IResourceBuilder<KubernetesIngressResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

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.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithHostname(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string hostname)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `hostname` (`string`)
  The hostname to match (e.g., `"api.example.com"`).

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## Examples

```csharp
ingress.WithHostname("api.example.com")
       .WithHostname("www.example.com");
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithHostname(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)

- Name: `WithHostname(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Adds a hostname using a parameter that will be resolved at deploy time.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithHostname(
        this IResourceBuilder<KubernetesIngressResource> builder,
        IResourceBuilder<ParameterResource> hostname)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `hostname` (`IResourceBuilder<ParameterResource>`)
  A parameter resource builder for the hostname value.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, string)

- Name: `WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

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.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithIngressAnnotation(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string key,
        string value)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `key` (`string`)
  The annotation key (e.g., `"nginx.ingress.kubernetes.io/rewrite-target"`).
- `value` (`string`)
  The 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

```csharp
ingress.WithIngressAnnotation("nginx.ingress.kubernetes.io/rewrite-target", "/$1");
ingress.WithIngressAnnotation("nginx.ingress.kubernetes.io/ssl-redirect", "true");
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, IResourceBuilder<ParameterResource>)

- Name: `WithIngressAnnotation(IResourceBuilder<KubernetesIngressResource>, string, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Adds a Kubernetes metadata annotation with a parameter value that will be resolved at deploy time.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithIngressAnnotation(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string key,
        IResourceBuilder<ParameterResource> value)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `key` (`string`)
  The annotation key.
- `value` (`IResourceBuilder<ParameterResource>`)
  A parameter resource builder for the annotation value.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithIngressClass(IResourceBuilder<KubernetesIngressResource>, string)

- Name: `WithIngressClass(IResourceBuilder<KubernetesIngressResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Sets the Kubernetes ingress class name that selects which ingress controller handles this ingress resource.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithIngressClass(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string className)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `className` (`string`)
  The ingress class name (e.g., `"nginx"`, `"traefik"`, `"azure-alb-external"`).

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithIngressClass(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)

- Name: `WithIngressClass(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Sets the Kubernetes ingress class name using a parameter that will be resolved at deploy time.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithIngressClass(
        this IResourceBuilder<KubernetesIngressResource> builder,
        IResourceBuilder<ParameterResource> className)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `className` (`IResourceBuilder<ParameterResource>`)
  A parameter resource builder for the ingress class name.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithRoute(IResourceBuilder<KubernetesIngressResource>, string, EndpointReference, IngressPathType)

- Name: `WithRoute(IResourceBuilder<KubernetesIngressResource>, string, EndpointReference, IngressPathType)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs#L118-L133)

Adds a path-based routing rule to the ingress. The rule matches all hosts and routes traffic matching the specified path to the given endpoint's backing Kubernetes service.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithRoute(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string path,
        EndpointReference endpoint,
        IngressPathType pathType = IngressPathType.Prefix)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `path` (`string`)
  The URL path to match (e.g., `"/"` or `"/api"`). Must start with `/`.
- `endpoint` (`EndpointReference`)
  The endpoint reference identifying the target service and port.
- `pathType` ([IngressPathType](/reference/api/csharp/aspire.hosting.kubernetes/ingresspathtype.md)) `optional`
  The path matching strategy. Defaults to [IngressPathType.Prefix](/reference/api/csharp/aspire.hosting.kubernetes/ingresspathtype/fields.md).

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## Examples

```csharp
var api = builder.AddProject<MyApi>("api");
ingress.WithRoute("/api", api.GetEndpoint("http"));
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithRoute(IResourceBuilder<KubernetesIngressResource>, string, string, EndpointReference, IngressPathType)

- Name: `WithRoute(IResourceBuilder<KubernetesIngressResource>, string, string, EndpointReference, IngressPathType)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs#L160-L176)

Adds a host-and-path-based routing rule to the ingress. The rule matches traffic for the specified host and path, routing it to the given endpoint's backing Kubernetes service.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithRoute(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string host,
        string path,
        EndpointReference endpoint,
        IngressPathType pathType = IngressPathType.Prefix)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `host` (`string`)
  The hostname to match (e.g., `"api.example.com"`).
- `path` (`string`)
  The URL path to match (e.g., `"/"` or `"/api"`). Must start with `/`.
- `endpoint` (`EndpointReference`)
  The endpoint reference identifying the target service and port.
- `pathType` ([IngressPathType](/reference/api/csharp/aspire.hosting.kubernetes/ingresspathtype.md)) `optional`
  The path matching strategy. Defaults to [IngressPathType.Prefix](/reference/api/csharp/aspire.hosting.kubernetes/ingresspathtype/fields.md).

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## Examples

```csharp
var api = builder.AddProject<MyApi>("api");
ingress.WithRoute("api.example.com", "/", api.GetEndpoint("http"));
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithTls(IResourceBuilder<KubernetesIngressResource>, string)

- Name: `WithTls(IResourceBuilder<KubernetesIngressResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Configures TLS termination for the ingress by referencing a Kubernetes TLS secret. The TLS configuration applies to all hostnames configured via [KubernetesIngressExtensions.WithHostname(IResourceBuilder<KubernetesIngressResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesingressextensions/methods.md#withhostname-iresourcebuilder-kubernetesingressresource-string).

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithTls(
        this IResourceBuilder<KubernetesIngressResource> builder,
        string secretName)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `secretName` (`string`)
  The name of the Kubernetes `kubernetes.io/tls` Secret.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithTls(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)

- Name: `WithTls(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs)

Configures TLS termination using a parameter for the secret name.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithTls(
        this IResourceBuilder<KubernetesIngressResource> builder,
        IResourceBuilder<ParameterResource> secretName)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `secretName` (`IResourceBuilder<ParameterResource>`)
  A parameter resource builder for the secret name.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithTls(IResourceBuilder<KubernetesIngressResource>)

- Name: `WithTls(IResourceBuilder<KubernetesIngressResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs#L274-L282)

Configures TLS termination with an auto-generated secret name derived from the ingress name.

```csharp
public static class KubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithTls(
        this IResourceBuilder<KubernetesIngressResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.

## Returns

`IResourceBuilder<KubernetesIngressResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
