mirror of https://github.com/hashicorp/consul
82 lines
3.9 KiB
Markdown
82 lines
3.9 KiB
Markdown
---
|
|
layout: docs
|
|
page_title: GatewayClass Resource Configuration
|
|
description: >-
|
|
A `GatewayClass` resource specifies a controller name, controller parameters, and global `Gateway` options for Consul API Gateway. Learn about its configuration model and reference specifications, and review an example config.
|
|
---
|
|
|
|
# GatewayClass Resource Configuration
|
|
|
|
This topic provides describes how to configure the `GatewayClass` resource, a generic Kubernetes gateway object used as a template for creating `Gateway` resources.
|
|
|
|
## Introduction
|
|
|
|
The `GatewayClass` 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
|
|
The following outline shows how to format the configurations in the `GatewayClass` object. Click on a property name to view details about the configuration.
|
|
|
|
* [`controllerName`](#controllername): string | required
|
|
* [`parametersRef`](#parametersref): object | optional
|
|
* [`group`](#parametersref): string | required if `parametersRef` is set
|
|
* [`kind`](#parametersref): string | required if `parametersRef` is set
|
|
* [`name`](#parametersref): string | required if `parametersRef` is set
|
|
* [`description`](#description): string | optional
|
|
|
|
## Specification
|
|
|
|
This topic provides details about the configuration parameters.
|
|
|
|
### controllerName
|
|
Specifies the name of the controller that manages the gateways generated by this class.
|
|
The value must always be `hashicorp.com/consul-api-gateway-controller`.
|
|
|
|
* Type: string
|
|
* Required: required
|
|
|
|
### parametersRef
|
|
Defines an API object that references additional configurations required by the gateway controller. The following table describes the fields that you must include in the `parametersRef` configuration.
|
|
|
|
* Type: object
|
|
* Required: optional
|
|
|
|
| Parameter | Description | Type | Required |
|
|
| --- | --- | --- | --- |
|
|
| `group` | Specifies the Kubernetes group that the `parametersRef` is a member of. <br/>The value must always be `api-gateway.consul.hashicorp.com`.<br/>The `parametersRef.group` is always the same across all deployments of Consul API Gateway. | String | Required |
|
|
| `kind` | Specifies the type of Kubernetes object that the `parametersRef` configuration defines. <br/>The value must always be `GatewayClassConfig`. <br/> This `parametersRef.kind` is always the same across all deployments of Consul API Gateway. | String | Required |
|
|
| `name` | Specifies a name for the `GatewayClassConfig` object. | String | Required |
|
|
|
|
|
|
### description
|
|
Specifies a human-readable description of the gateway class. We recommend using the description field to describe the gateway class's purpose.
|
|
|
|
* Type: string
|
|
* Required: optional
|
|
|
|
## Example Configuration
|
|
The following example creates a gateway class called `test-gateway-class`:
|
|
|
|
<CodeBlockConfig filename="gateway.yaml">
|
|
|
|
```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
|
|
description: The gateway class is for creating test gateways class configurations
|
|
```
|
|
</CodeBlockConfig>
|
|
|
|
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.
|
|
|