# AzureKubernetesIngressExtensions Methods

- Package: [Aspire.Hosting.Azure.Kubernetes](/reference/api/csharp/aspire.hosting.azure.kubernetes.md)
- Type: [AzureKubernetesIngressExtensions](/reference/api/csharp/aspire.hosting.azure.kubernetes/azurekubernetesingressextensions.md)
- Kind: `Methods`
- Members: `5`

Provides extension methods for adding Kubernetes Ingress and Gateway resources to AKS environments.

## AddGateway(IResourceBuilder<AzureKubernetesEnvironmentResource>, string)

- Name: `AddGateway(IResourceBuilder<AzureKubernetesEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesGatewayResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesIngressExtensions.cs#L78-L82)

Adds a Kubernetes Gateway API Gateway resource to the application model, associated with the inner Kubernetes environment of the specified AKS environment.

```csharp
public static class AzureKubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesGatewayResource> AddGateway(
        this IResourceBuilder<AzureKubernetesEnvironmentResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureKubernetesEnvironmentResource>`)
  The AKS environment resource builder.
- `name` (`string`)
  The name of the gateway resource.

## Returns

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

## Examples

```csharp
var aks = builder.AddAzureKubernetesEnvironment("aks");
var gateway = aks.AddGateway("public")
    .WithGatewayClass("azure-alb-external");

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddHelmChart(IResourceBuilder<AzureKubernetesEnvironmentResource>, string, string, string)

- Name: `AddHelmChart(IResourceBuilder<AzureKubernetesEnvironmentResource>, string, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesHelmChartResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesIngressExtensions.cs#L130-L136)

Adds an external Helm chart to be installed in the AKS environment's inner Kubernetes environment. The chart is installed via `helm upgrade --install` as a pipeline step after the main application Helm chart is deployed.

```csharp
public static class AzureKubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesHelmChartResource> AddHelmChart(
        this IResourceBuilder<AzureKubernetesEnvironmentResource> builder,
        string name,
        string chartReference,
        string chartVersion)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureKubernetesEnvironmentResource>`)
  The AKS environment resource builder.
- `name` (`string`)
  The name of the Helm chart resource.
- `chartReference` (`string`)
  The Helm chart reference. Can be an OCI registry URL (e.g., `oci://quay.io/jetstack/charts/cert-manager`) or a chart name from an added repository.
- `chartVersion` (`string`)
  The chart version to install.

## Returns

`IResourceBuilder<KubernetesHelmChartResource>` -- A resource builder for the Helm chart resource.

## Remarks

This method delegates to the inner `Kubernetes.KubernetesEnvironmentResource` of the AKS environment, so the returned `Kubernetes.KubernetesHelmChartResource` can be configured with the same `KubernetesHelmChartExtensions.WithHelmValue`, `KubernetesHelmChartExtensions.WithNamespace`, `KubernetesHelmChartExtensions.WithReleaseName`, and `KubernetesHelmChartExtensions.WithDestroy` extensions used with non-AKS Kubernetes environments.

External Helm charts are not uninstalled by `aspire destroy` by default, because they may be shared with workloads outside the Aspire app. Opt in by chaining `KubernetesHelmChartExtensions.WithDestroy`.

## Examples

```csharp
var aks = builder.AddAzureKubernetesEnvironment("aks");

// Install cert-manager
aks.AddHelmChart("cert-manager", "oci://quay.io/jetstack/charts/cert-manager", "1.17.0")
    .WithHelmValue("crds.enabled", "true");
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddIngress(IResourceBuilder<AzureKubernetesEnvironmentResource>, string)

- Name: `AddIngress(IResourceBuilder<AzureKubernetesEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesIngressExtensions.cs#L48-L52)

Adds a Kubernetes Ingress resource to the application model, associated with the inner Kubernetes environment of the specified AKS environment. The ingress generates a `networking.k8s.io/v1 Ingress` resource in the Helm chart output at publish time.

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

## Parameters

- `builder` (`IResourceBuilder<AzureKubernetesEnvironmentResource>`)
  The AKS environment resource builder.
- `name` (`string`)
  The name of the ingress resource.

## Returns

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

## Remarks

This method delegates to the inner `Kubernetes.KubernetesEnvironmentResource` of the AKS environment. To use an AKS-specific ingress controller (e.g., Azure Application Gateway for Containers), call `KubernetesIngressExtensions.WithIngressClass` with the appropriate class name.

## Examples

```csharp
var aks = builder.AddAzureKubernetesEnvironment("aks");
var ingress = aks.AddIngress("public")
    .WithIngressClass("azure-alb-external");

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithLoadBalancer(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<AzureKubernetesLoadBalancerResource>)

- Name: `WithLoadBalancer(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<AzureKubernetesLoadBalancerResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesGatewayResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesIngressExtensions.cs)

Routes a Kubernetes `Kubernetes.KubernetesGatewayResource` through the supplied Azure Application Gateway for Containers (AGC) [AzureKubernetesLoadBalancerResource](/reference/api/csharp/aspire.hosting.azure.kubernetes/azurekubernetesloadbalancerresource.md).

```csharp
public static class AzureKubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesGatewayResource> WithLoadBalancer(
        this IResourceBuilder<KubernetesGatewayResource> builder,
        IResourceBuilder<AzureKubernetesLoadBalancerResource> loadBalancer)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesGatewayResource>`)
  The gateway resource builder.
- `loadBalancer` (`IResourceBuilder<AzureKubernetesLoadBalancerResource>`)
  The AGC load balancer to route through.

## Returns

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

## Remarks

Writes the AGC routing annotations ( `alb.networking.azure.io/alb-name` and `alb.networking.azure.io/alb-namespace`) onto the rendered Gateway and defaults the GatewayClass to `azure-alb-external` when one has not already been set via `WithGatewayClass(...)`.

## Examples

```csharp
var lb = aks.AddLoadBalancer("lb", albSubnet);
var gateway = aks.AddGateway("public").WithLoadBalancer(lb);
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithLoadBalancer(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<AzureKubernetesLoadBalancerResource>)

- Name: `WithLoadBalancer(IResourceBuilder<KubernetesIngressResource>, IResourceBuilder<AzureKubernetesLoadBalancerResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesIngressResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesIngressExtensions.cs)

Routes a Kubernetes `Kubernetes.KubernetesIngressResource` through the supplied Azure Application Gateway for Containers (AGC) [AzureKubernetesLoadBalancerResource](/reference/api/csharp/aspire.hosting.azure.kubernetes/azurekubernetesloadbalancerresource.md).

```csharp
public static class AzureKubernetesIngressExtensions
{
    public static IResourceBuilder<KubernetesIngressResource> WithLoadBalancer(
        this IResourceBuilder<KubernetesIngressResource> builder,
        IResourceBuilder<AzureKubernetesLoadBalancerResource> loadBalancer)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesIngressResource>`)
  The ingress resource builder.
- `loadBalancer` (`IResourceBuilder<AzureKubernetesLoadBalancerResource>`)
  The AGC load balancer to route through.

## Returns

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

## Remarks

Writes the AGC routing annotations ( `alb.networking.azure.io/alb-name` and `alb.networking.azure.io/alb-namespace`) onto the rendered Ingress and defaults the IngressClass to `azure-alb-external` when one has not already been set via `WithIngressClass(...)`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
