--- 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:
`ClusterIP`
`NodePort`
`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`: ```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 ``` | 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.