---
layout: docs
page_title: Consul API Gateway GatewayClassConfig
description:  >-
  Consul API Gateway GatewayClassConfig
---

# GatewayClassConfig

This topic provides full details about the `GatewayClassConfig` resource

## Introduction

The `GatewayClassConfig` object contains Consul API Gateway-related configuration parameters. Apply the parameters by adding the [`GatewayClass`](#gatewayclass) object to your Kubernetes values file and specifying the name of the `GatewayClassConfig`. 

A `GatewayClassConfig` object provides configuration options specifc to Consul API Gateway

## Configuration model

* (`consul`)[###consul]: object | optional
  * (`address`)[###consul.address] : string | optional
  * (`authentication`)[###consul.authentication]: object | optional
    * (`account`)[[###consul.authentication.account] : string | optional
    * (`managed`)[###consul.authentication.managed] : bool  | optional
    * (`method`)[###consul.authentication.method] : string | optional
    * (`namespace`)[###consul.authentication.namespace] : string  | optional
  * (`ports`)[###consul.ports] : object  | optional
    * (`grpc`)[###consul.ports.grpc]  : integer | optional
    * (`http`)[###consul.ports.http]  : integer | optional
  * (`scheme`)[###consul.scheme]  : string  | optional
* (`copyAnnotations`)[###copyAnnotations]  : object | optional
  * (`service`)[###copyAnnotations.service] : array of strings | optional
* (`deployment`)[###deployment] : object | optional
  * (`defaultInstances`)[###deployment.defaultInstances] : integer | optional
  * (`maxInstances`)[###deployment.maxInstances] : integer | optional
  * (`minInstances`)[###deployment.minInstances] : integer | optional
* (`image`)[###image] : object | optional
  * (`consulAPIGateway`)[###image.consulAPIGateway] : string | optional
  * (`envoy`)[###image.envoy] : string | optional
* (`logLevel`)[###logLevel] : string | optional
* (`nodeSelector`)[###nodeSelector] : string | optional
* (`serviceType`)[###serviceType] : string | optional
* (`useHostPorts`)[###useHostPorts] : boolean | optional

## Specification

This topic provides details about the configuration parameters.

### consul
* Type: object
* Required: optional

### consul.address
Specifies the address of the Consul server that the `Gateway` communicates with in the gateway pod. If unspecified, the pod attempts to use a local agent on the host where the pod is running.
* Type: string
* Required: optional
* Default: local agent

### consul.authentication.account
Specifies the Kubernetes service account to use for authentication.
* Type: string
* Required: optional

### consul.authentication.managed
Set to `true` to enable deployments to run with managed service accounts created by the gateway controller. The `consul.authentication.account` field is ignored when this option is enabled.
* Type: boolean
* Required: optional
* Default: `false`

### consul.authentication.method
Specifies the Consul auth method used for initial authentication by Consul API Gateway.
* Type: string
* Required: optional

### consul.authentication.namespace
Specifies the Consul namespace to use for authentication.
* Type: string
* Required: optional

### consul.ports.grpc
Specifies the gRPC port for Consul's xDS server.
* Type: integer
* Required: optional
* Default: `8502`

### consul.ports.http
Specifies the Consul namespace to use for authentication.
* Type: integer
* Required: optional
* Default: `8500`

### consul.scheme
Specifies the scheme to use for connecting to Consul. The supported values are `"http"` and `"https"`.
* Type: string
* Required: optional
* Default: `http`

### copyAnnotations.service
List of kubernetes (annotations)[https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/] to copy to the gateway service.
* Type: Array of Strings
* Required: optional

### deployment.defaultInstances
Specifies the number of gateway instances to deploy per gateway configuration
* Type: Integer
* Required: optional
* Default: 1

### deployment.maxInstances
Specifies the maximum allowed number of gateway instances per gateway configuration
* Type: Integer
* Required: optional
* Default: 8

### deployment.minInstances
Specifies the minimum allowed number of gateway instances per gateway configuration
* Type: Integer
* Required: optional
* Default: 1

### image.consulAPIGateway
The image to use for consul-api-gateway. View available image tags on [DockerHub](https://hub.docker.com/r/hashicorp/consul-api-gateway/tags).

Most deployments will use the default value unless a specific version of the Consul API Gateway is desired.
* Type: string
* Required: optional
* Default: `"hashicorp/consul-api-gateway:RELEASE_VERSION"`

### image.envoy
The image to use for consul-api-gateway. View available image tags on [DockerHub](https://hub.docker.com/r/hashicorp/consul-api-gateway/tags).

Most deployments will use the default value unless a specific version of Envoy is desired.
* Type: string
* Required: optional
* Default: `"envoyproxy/envoy:RELEASE_VERSION"`

### logLevel
Specifies the error reporting level for logs. You can specify the following values: `error`, `warning`, `info`, `debug`, `trace`.
* Type: string
* Required: optional
* Default: `info`

### nodeSelector
Specifies a set of parameters that constrain the nodes on which the pod can run. Defining nodes with the `nodeSelector` enables the pod to fit on a node. The selector must match a node's labels for the pod to be scheduled on that node. Refer to the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) for additional information.* Type: string
* Required: optional

### serviceType
Specifies the ingress methods for a service. The following values are supported: <br/>`ClusterIP` <br/>`NodePort` <br/>`LoadBalancer`.
* Type: string
* Required: optional

### useHostPorts
If set to `true`, then the Envoy container ports are mapped to host ports.
* Type: boolean
* Required: optional
* Default: `false`


## Full Configuration
The following example creates a gateway class configuration called `test-gateway-class-config`:

<CodeBlockConfig filename="gateway.yaml">

  ```yaml
  apiVersion: api-gateway.consul.hashicorp.com/v1alpha1
  kind: GatewayClassConfig
  metadata:
    name: test-gateway-class-config
  spec:
    useHostPorts: true
    logLevel: 'trace'
    consul:
      scheme: 'https'
      ports:
        http: 8501
        grpc: 8502
```
</CodeBlockConfig>




                                                                                                                                                                                                                                | String  | `"hashicorp/consul-api-gateway:RELEASE_VERSION"` |
                                                                                                                                                                                                                                       | String  | `"info"`                                         |
| `nodeSelector`                    |  | Object  | N/A                                              |
| `serviceType`                     |                                                                                                                                                                                                                                               | String  | N/A                                              |
| `useHostPorts`                    |                                                                                                                                                                                                                                                                                                         | Boolean | `false`                                          |

Refer to the [Consul API Gateway repository](https://github.com/hashicorp/consul-api-gateway/blob/main/config/crd/bases/api-gateway.consul.hashicorp.com_gatewayclassconfigs.yaml) for the complete specification.
