# KubernetesEnvironmentExtensions Methods

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

Provides extension methods for adding Kubernetes environment resources to the application model.

## AddKubernetesEnvironment(IDistributedApplicationBuilder, string)

- Name: `AddKubernetesEnvironment(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L80-L104)

Adds a Kubernetes environment to the application model.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesEnvironmentResource> AddKubernetesEnvironment(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the Kubernetes environment resource.

## Returns

`IResourceBuilder<KubernetesEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddNodePool(IResourceBuilder<KubernetesEnvironmentResource>, string)

- Name: `AddNodePool(IResourceBuilder<KubernetesEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesNodePoolResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L235-L246)

Adds a named node pool to the Kubernetes environment.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesNodePoolResource> AddNodePool(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `name` (`string`)
  The name of the node pool. This value is used as the `nodeSelector` value.

## Returns

`IResourceBuilder<KubernetesNodePoolResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for the new node pool.

## Remarks

For vanilla Kubernetes, this creates a named reference to an existing node pool. For managed Kubernetes services (e.g., AKS), the cloud-specific `AddNodePool` overload provisions the pool with additional configuration such as VM size and autoscaling. Use [KubernetesEnvironmentExtensions.WithNodePool(IResourceBuilder<T>, IResourceBuilder<KubernetesNodePoolResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesenvironmentextensions/methods.md#withnodepool-iresourcebuilder-t-iresourcebuilder-kubernetesnodepoolresource) to schedule workloads on the returned node pool.

## Examples

```csharp
var k8s = builder.AddKubernetesEnvironment("k8s");
var gpuPool = k8s.AddNodePool("gpu");

builder.AddProject<MyApi>()
    .WithComputeEnvironment(k8s)
    .WithNodePool(gpuPool);
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDashboard(IResourceBuilder<KubernetesEnvironmentResource>, bool)

- Name: `WithDashboard(IResourceBuilder<KubernetesEnvironmentResource>, bool)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L178-L182)

Enables the Aspire dashboard for telemetry visualization in this Kubernetes environment.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesEnvironmentResource> WithDashboard(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        bool enabled = true)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `enabled` (`bool`) `optional`
  Whether to enable the dashboard. Default is true.

## Returns

`IResourceBuilder<KubernetesEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

When enabled, an Aspire Dashboard container is deployed alongside the application resources in the Kubernetes cluster. All resources with OTLP telemetry support are automatically configured to send telemetry data to the dashboard.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDashboard(IResourceBuilder<KubernetesEnvironmentResource>, Action<IResourceBuilder<KubernetesAspireDashboardResource>>)

- Name: `WithDashboard(IResourceBuilder<KubernetesEnvironmentResource>, Action<IResourceBuilder<KubernetesAspireDashboardResource>>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L198-L205)

Configures the dashboard properties for this Kubernetes environment.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesEnvironmentResource> WithDashboard(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        Action<IResourceBuilder<KubernetesAspireDashboardResource>> configure)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `configure` (`Action<IResourceBuilder<KubernetesAspireDashboardResource>>`)
  A method that can be used for customizing the dashboard resource.

## Returns

`IResourceBuilder<KubernetesEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

Use this overload to customize the dashboard container, for example to set a specific host port or enable forwarded headers for ingress access.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithHelm(IResourceBuilder<KubernetesEnvironmentResource>, Action<HelmChartOptions>)

- Name: `WithHelm(IResourceBuilder<KubernetesEnvironmentResource>, Action<HelmChartOptions>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L133-L144)

Configures the Kubernetes environment to deploy using Helm charts.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesEnvironmentResource> WithHelm(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        Action<HelmChartOptions>? configure = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `configure` (`Action<HelmChartOptions>`) `optional`
  An optional callback to configure Helm chart settings such as namespace, release name, and chart version.

## Returns

`IResourceBuilder<KubernetesEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

Helm is the default deployment engine. Call this method to customize Helm-specific settings.

## Examples

Configure Helm deployment with custom settings:

```csharp
builder.AddKubernetesEnvironment("k8s")
    .WithHelm(helm =>
    {
        helm.WithNamespace("my-namespace");
        helm.WithReleaseName("my-release");
        helm.WithChartVersion("1.0.0");
    });
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithNodePool(IResourceBuilder<T>, IResourceBuilder<KubernetesNodePoolResource>)

- Name: `WithNodePool(IResourceBuilder<T>, IResourceBuilder<KubernetesNodePoolResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<T>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L274-L278)

Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<T> WithNodePool<T>(
        this IResourceBuilder<T> builder,
        IResourceBuilder<KubernetesNodePoolResource> nodePool)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<T>`)
  The resource builder.
- `nodePool` (`IResourceBuilder<KubernetesNodePoolResource>`)
  The node pool to schedule the workload on.

## Returns

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

## Examples

```csharp
var k8s = builder.AddKubernetesEnvironment("k8s");
var gpuPool = k8s.AddNodePool("gpu");

builder.AddProject<MyApi>()
    .WithComputeEnvironment(k8s)
    .WithNodePool(gpuPool);
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithProperties(IResourceBuilder<KubernetesEnvironmentResource>, Action<KubernetesEnvironmentResource>)

- Name: `WithProperties(IResourceBuilder<KubernetesEnvironmentResource>, Action<KubernetesEnvironmentResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<KubernetesEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs#L156-L161)

Allows setting the properties of a Kubernetes environment resource.

```csharp
public static class KubernetesEnvironmentExtensions
{
    public static IResourceBuilder<KubernetesEnvironmentResource> WithProperties(
        this IResourceBuilder<KubernetesEnvironmentResource> builder,
        Action<KubernetesEnvironmentResource> configure)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KubernetesEnvironmentResource>`)
  The Kubernetes environment resource builder.
- `configure` (`Action<KubernetesEnvironmentResource>`)
  A method that can be used for customizing the [KubernetesEnvironmentResource](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesenvironmentresource.md).

## Returns

`IResourceBuilder<KubernetesEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
