# KubernetesGatewayExtensions

- Kind: `class`
- Package: [Aspire.Hosting.Kubernetes](/reference/api/csharp/aspire.hosting.kubernetes.md)
- Version: `13.3.0-preview.1.26254.5`
- Namespace: `Aspire.Hosting`
- Target framework: `net8.0`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs)

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

## Definition

```csharp
namespace Aspire.Hosting;

public static class KubernetesGatewayExtensions
{
    // ...
}
```

## Methods

- [AddGateway(IResourceBuilder<KubernetesEnvironmentResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#addgateway-iresourcebuilder-kubernetesenvironmentresource-string) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a Kubernetes Gateway API Gateway resource to the application model as a child of the specified Kubernetes environment. The gateway generates a `gateway.networking.k8s.io/v1 Gateway` resource and one or more `HTTPRoute` resources in the Helm chart output at publish time.
- [WithGatewayAnnotation(IResourceBuilder<KubernetesGatewayResource>, string, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withgatewayannotation-iresourcebuilder-kubernetesgatewayresource-string-string) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a Kubernetes metadata annotation to the generated Gateway resource.
- [WithGatewayAnnotation(IResourceBuilder<KubernetesGatewayResource>, string, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withgatewayannotation-iresourcebuilder-kubernetesgatewayresource-string-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a Kubernetes metadata annotation with a parameter value that will be resolved at deploy time.
- [WithGatewayClass(IResourceBuilder<KubernetesGatewayResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withgatewayclass-iresourcebuilder-kubernetesgatewayresource-string) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Sets the GatewayClass name that selects which controller implementation handles this gateway.
- [WithGatewayClass(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withgatewayclass-iresourcebuilder-kubernetesgatewayresource-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Sets the GatewayClass name using a parameter that will be resolved at deploy time.
- [WithHostname(IResourceBuilder<KubernetesGatewayResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withhostname-iresourcebuilder-kubernetesgatewayresource-string) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a hostname that this gateway's routes match. Multiple hostnames can be added by calling this method repeatedly. Hostnames are used as `hostnames` in generated `HTTPRoute` resources and as HTTPS listener hostnames when TLS is configured.
- [WithHostname(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withhostname-iresourcebuilder-kubernetesgatewayresource-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a hostname using a parameter that will be resolved at deploy time.
- [WithRoute(IResourceBuilder<KubernetesGatewayResource>, string, EndpointReference, IngressPathType)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withroute-iresourcebuilder-kubernetesgatewayresource-string-endpointreference-ingresspathtype) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a path-based routing rule to the gateway. The rule matches all hosts and routes traffic matching the specified path to the given endpoint's backing Kubernetes service. This generates an `HTTPRoute` resource attached to the Gateway.
- [WithRoute(IResourceBuilder<KubernetesGatewayResource>, string, string, EndpointReference, IngressPathType)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withroute-iresourcebuilder-kubernetesgatewayresource-string-string-endpointreference-ingresspathtype) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Adds a host-and-path-based routing rule to the gateway. The rule matches traffic for the specified host and path, routing it to the given endpoint's backing Kubernetes service. This generates an `HTTPRoute` resource with a `hostnames` filter.
- [WithTls(IResourceBuilder<KubernetesGatewayResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withtls-iresourcebuilder-kubernetesgatewayresource-string) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Configures TLS termination on the gateway by adding an HTTPS listener that references a Kubernetes TLS secret. The Gateway terminates TLS and forwards plain HTTP to backends. This does not create a separate route -- existing HTTPRoutes serve both HTTP and HTTPS. The TLS configuration applies to all hostnames configured via [KubernetesGatewayExtensions.WithHostname(IResourceBuilder<KubernetesGatewayResource>, string)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withhostname-iresourcebuilder-kubernetesgatewayresource-string).
- [WithTls(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withtls-iresourcebuilder-kubernetesgatewayresource-iresourcebuilder-parameterresource) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Configures TLS termination using a parameter for the secret name.
- [WithTls(IResourceBuilder<KubernetesGatewayResource>)](/reference/api/csharp/aspire.hosting.kubernetes/kubernetesgatewayextensions/methods.md#withtls-iresourcebuilder-kubernetesgatewayresource) : `IResourceBuilder<KubernetesGatewayResource>` `extension` `ats export` -- Configures TLS termination with an auto-generated secret name derived from the gateway name.
