# KubernetesHelmChartResource

- Kind: `class`
- Package: [Aspire.Hosting.Kubernetes](/reference/api/csharp/aspire.hosting.kubernetes.md)
- Version: `13.4.0-preview.1.26281.18`
- Namespace: `Aspire.Hosting.Kubernetes`
- Target framework: `net8.0`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/becb48e2d61099e35ae336d527d3875e928d6594/src/Aspire.Hosting.Kubernetes/KubernetesHelmChartResource.cs)
- Inherits: `Resource`
- Implements: `IResource`, `IResourceWithParent`, `IResourceWithParent<KubernetesEnvironmentResource>`

Represents an external Helm chart to be installed into a Kubernetes environment. This resource models a Helm chart from a repository (OCI or HTTP) that will be installed as a pipeline step after the main application Helm chart is deployed.

## Definition

```csharp
namespace Aspire.Hosting.Kubernetes;

public sealed class KubernetesHelmChartResource
    : Aspire.Hosting.ApplicationModel.Resource,
      Aspire.Hosting.ApplicationModel.IResource,
      Aspire.Hosting.ApplicationModel.IResourceWithParent,
      Aspire.Hosting.ApplicationModel.IResourceWithParent<Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource>
{
    // ...
}
```

## ATS metadata

### ATS export

- Type ID: `Aspire.Hosting.Kubernetes/KubernetesHelmChartResource`

## Remarks

Create a Helm chart resource using [KubernetesHelmChartExtensions.AddHelmChart(IResourceBuilder<KubernetesEnvironmentResource>, string, string, string)](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartextensions/methods.md#addhelmchart-iresourcebuilder-kubernetesenvironmentresource-string-string-string) and configure it with values using [KubernetesHelmChartExtensions.WithHelmValue(IResourceBuilder<KubernetesHelmChartResource>, string, string)](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartextensions/methods.md#withhelmvalue-iresourcebuilder-kuberneteshelmchartresource-string-string).

At deploy time, the chart is installed via `helm upgrade --install` as a pipeline step that runs after the main application Helm chart is deployed. The chart is installed into the specified namespace (defaulting to the chart name).

By default, an external Helm chart is not uninstalled by `aspire destroy`. Opt in to destroy-time uninstall by calling [KubernetesHelmChartExtensions.WithDestroy(IResourceBuilder<KubernetesHelmChartResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartextensions/methods.md#withdestroy-iresourcebuilder-kuberneteshelmchartresource).

## Constructors

- [KubernetesHelmChartResource(string, KubernetesEnvironmentResource, string, string)](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/constructors.md#constructor-string-kubernetesenvironmentresource-string-string) -- Initializes a new instance of [KubernetesHelmChartResource](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource.md).

## Properties

- [ChartReference](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/properties.md#chartreference) : `string` `get` -- Gets the Helm chart reference. This can be an OCI registry URL (e.g., `oci://quay.io/jetstack/charts/cert-manager`) or a chart name from an added repository.
- [ChartVersion](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/properties.md#chartversion) : `string` `get` -- Gets the chart version to install.
- [Namespace](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/properties.md#namespace) : `string?` `get; set` -- Gets or sets the Kubernetes namespace to install the chart into. Defaults to the chart resource name if not specified.
- [Parent](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/properties.md#parent) : [KubernetesEnvironmentResource](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesenvironmentresource.md) `get` -- Gets the parent Kubernetes environment resource.
- [ReleaseName](/reference/api/csharp/aspire.hosting.kubernetes/kuberneteshelmchartresource/properties.md#releasename) : `string?` `get; set` -- Gets or sets the Helm release name. Defaults to the resource name.

## Examples

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

// Install NGINX Ingress Controller from OCI registry
k8s.AddHelmChart("nginx", "oci://ghcr.io/nginx/charts/nginx-ingress", "1.5.0");

// Install cert-manager with custom values
k8s.AddHelmChart("cert-manager", "oci://quay.io/jetstack/charts/cert-manager", "1.17.0")
    .WithHelmValue("crds.enabled", "true")
    .WithHelmValue("config.enableGatewayAPI", "true");
```
