--- layout: docs page_title: Consul API Gateway GatewayClass description: >- Consul API Gateway GatewayClass --- # GatewayClass This topic provides full details about the `GatewayClass` resource ## Introduction The `GatewayClass` resource is used as a template for creating `Gateway` resources. The specification includes the name of the controller (`controllerName`) and an API object containing controller-specific configuration resources within the cluster (`parametersRef`). The value of the `controllerName` field must be set to `hashicorp.com/consul-api-gateway-controller`. When gateways are created from a `GatewayClass`, they use the parameters specified in the `GatewayClass` at the time of instantiation. The `GatewayClass` resource is a generic kubernetes gateway object. For configuration specific to Consul API Gateway, see [GatewayClassConfig](/docs/api-gateway/configuration/gatewayclassconfig). ## Configuration model * (`controllerName`)[###controllerName]: string | required * (`parametersRef`)[###parametersRef]: object | optional * (`group`)[###parametersRef.group]: Group | required is parametersRef is set * (`kind`)[###parametersRef.kind]: Kind | required is parametersRef is set * (`name`)[###parametersRef.name]: string | required is parametersRef is set * (`description`)[###description]: string | optional ## Specification This topic provides details about the configuration parameters. ### controllerName The name of the controller that is managing the gateways of this class. When using Consul API Gateway, this value should be equal to `'hashicorp.com/consul-api-gateway-controller'` * Type: string * Required: required ### parametersRef An object that defines additional configuration required by the gateway controller. * Type: object * Required: required ### parametersRef.group The Kubernetes group of the `parametersRef`. This value will always be the same across all deployments of Consul API Gateway. * Type: Group * Required: required You must specify the following value: * `api-gateway.consul.hashicorp.com` ### parametersRef.kind The Kubernetes kind of the `parametersRef`. This value will always be the same across all deployments of Consul API Gateway. * Type: Kind * Required: required You must specify the following value: * `GatewayClassConfig` ### parametersRef.name The name of the `GatewayClassConfig` object * Type: object * Required: required ### description Helps describe a gateway class with more details * Type: string * Required: optional ## Complete Configuration The following example creates a gateway class called `test-gateway-class`: ```yaml apiVersion: gateway.networking.k8s.io/v1alpha2 kind: GatewayClass metadata: name: test-gateway-class spec: controllerName: 'hashicorp.com/consul-api-gateway-controller' parametersRef: group: api-gateway.consul.hashicorp.com kind: GatewayClassConfig name: test-gateway-class-config ``` Refer to the [Kubernetes Gateway API documentation](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.GatewayClass) for details about configuring gateway classes.