# KindManifestResourceBuilderExtensions Methods

- Package: [CommunityToolkit.Aspire.Hosting.Kind](/reference/api/csharp/communitytoolkit.aspire.hosting.kind.md)
- Type: [KindManifestResourceBuilderExtensions](/reference/api/csharp/communitytoolkit.aspire.hosting.kind/kindmanifestresourcebuilderextensions.md)
- Kind: `Methods`
- Members: `9`

Extension methods for adding Kubernetes manifest resources to Kind clusters.

<a id="addmanifest"></a>
<a id="addmanifest-iresourcebuilder-kindclusterresource-string-string"></a>

## AddManifest(IResourceBuilder<KindClusterResource>, string, string)

- Name: `AddManifest(IResourceBuilder<KindClusterResource>, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L40-L52)

Adds a Kubernetes manifest to be applied to the Kind cluster via `kubectl apply`.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> AddManifest(
        this IResourceBuilder<KindClusterResource> builder,
        string name,
        string manifestPath)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KindClusterResource>`)
  The Kind cluster resource builder.
- `name` (`string`)
  The name of the manifest resource.
- `manifestPath` (`string`)
  Absolute path to a Kubernetes manifest file, a directory of manifest files, or a Kustomize overlay directory. Relative paths are not supported. URL fetch is not supported; reference a local file or directory.

## Returns

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

## Remarks

The manifest is applied after the parent Kind cluster reaches the `KnownResourceStates.Running` state. Downstream resources that call `WaitFor` on the manifest resource only start once `kubectl apply` succeeds. Requires `kubectl` on `PATH`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="addmanifestfromcontent"></a>
<a id="addmanifestfromcontent-iresourcebuilder-kindclusterresource-string-string"></a>

## AddManifestFromContent(IResourceBuilder<KindClusterResource>, string, string)

- Name: `AddManifestFromContent(IResourceBuilder<KindClusterResource>, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L68-L77)

Adds Kubernetes manifest content to be applied to the Kind cluster via `kubectl apply -f -`.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> AddManifestFromContent(
        this IResourceBuilder<KindClusterResource> builder,
        string name,
        string content)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<KindClusterResource>`)
  The Kind cluster resource builder.
- `name` (`string`)
  The name of the manifest resource.
- `content` (`string`)
  The Kubernetes manifest YAML content.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withapplytimeout"></a>
<a id="withapplytimeout-iresourcebuilder-k8smanifestresource-timespan"></a>

## WithApplyTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)

- Name: `WithApplyTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L250-L253)

Sets the maximum time to wait for `kubectl apply` to complete.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithApplyTimeout(
        this IResourceBuilder<K8sManifestResource> builder,
        TimeSpan timeout)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `timeout` (`TimeSpan`)
  The apply timeout.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withclusterreadytimeout"></a>
<a id="withclusterreadytimeout-iresourcebuilder-k8smanifestresource-timespan"></a>

## WithClusterReadyTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)

- Name: `WithClusterReadyTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L233-L236)

Sets the maximum time to wait for the Kubernetes API to become reachable before running `kubectl apply`.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithClusterReadyTimeout(
        this IResourceBuilder<K8sManifestResource> builder,
        TimeSpan timeout)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `timeout` (`TimeSpan`)
  The total readiness budget shared across repeated `kubectl cluster-info` probes. Values are normalized to whole seconds and must fall within the supported timeout range.

## Returns

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

## Remarks

Use this when the cluster control plane can take longer than the default 60 seconds to begin serving the Kubernetes API, such as on slower developer machines or busy CI hosts.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withcrdwaitbehavior"></a>
<a id="withcrdwaitbehavior-iresourcebuilder-k8smanifestresource-crdwaitbehavior"></a>

## WithCrdWaitBehavior(IResourceBuilder<K8sManifestResource>, CrdWaitBehavior)

- Name: `WithCrdWaitBehavior(IResourceBuilder<K8sManifestResource>, CrdWaitBehavior)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L284-L287)

Sets whether CRD wait failures fail the manifest resource or are logged as best-effort warnings.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithCrdWaitBehavior(
        this IResourceBuilder<K8sManifestResource> builder,
        CrdWaitBehavior behavior)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `behavior` ([CrdWaitBehavior](/reference/api/csharp/communitytoolkit.aspire.hosting.kind/crdwaitbehavior.md))
  The CRD wait behavior.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withcrdwaittimeout"></a>
<a id="withcrdwaittimeout-iresourcebuilder-k8smanifestresource-timespan"></a>

## WithCrdWaitTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)

- Name: `WithCrdWaitTimeout(IResourceBuilder<K8sManifestResource>, TimeSpan)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L267-L270)

Sets the maximum time to wait for applied CRDs to reach the `Established` condition.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithCrdWaitTimeout(
        this IResourceBuilder<K8sManifestResource> builder,
        TimeSpan timeout)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `timeout` (`TimeSpan`)
  The CRD wait timeout.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withfieldmanager"></a>
<a id="withfieldmanager-iresourcebuilder-k8smanifestresource-string"></a>

## WithFieldManager(IResourceBuilder<K8sManifestResource>, string)

- Name: `WithFieldManager(IResourceBuilder<K8sManifestResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L207-L211)

Sets the field manager name passed to `kubectl apply --field-manager`.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithFieldManager(
        this IResourceBuilder<K8sManifestResource> builder,
        string fieldManager)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `fieldManager` (`string`)
  The field manager name.

## Returns

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

## Remarks

The flag is passed whenever this method is used, but it is primarily meaningful with server-side apply because Kubernetes records managed fields for server-side operations.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withrecursive"></a>
<a id="withrecursive-iresourcebuilder-k8smanifestresource"></a>

## WithRecursive(IResourceBuilder<K8sManifestResource>)

- Name: `WithRecursive(IResourceBuilder<K8sManifestResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L163-L166)

Recursively applies manifests from subdirectories (maps to `kubectl apply --recursive`). Only meaningful when the manifest path is a directory.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithRecursive(
        this IResourceBuilder<K8sManifestResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

<a id="withserversideapply"></a>
<a id="withserversideapply-iresourcebuilder-k8smanifestresource-bool"></a>

## WithServerSideApply(IResourceBuilder<K8sManifestResource>, bool)

- Name: `WithServerSideApply(IResourceBuilder<K8sManifestResource>, bool)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<K8sManifestResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/3ebe72753ae604ec3c9e343865740e6f8512e1b6/src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs#L184-L189)

Applies the manifest server-side (maps to `kubectl apply --server-side`). Required for large CRDs that exceed the client-side annotation size limit.

```csharp
public static class KindManifestResourceBuilderExtensions
{
    public static IResourceBuilder<K8sManifestResource> WithServerSideApply(
        this IResourceBuilder<K8sManifestResource> builder,
        bool forceConflicts = false)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<K8sManifestResource>`)
  The manifest resource builder.
- `forceConflicts` (`bool`) `optional`
  When `true`, also passes `--force-conflicts` to override field ownership held by another field manager (e.g., a controller). Defaults to `false`.

## Returns

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

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
