---
layout: docs
page_title: Consul API Gateway Basic Usage
description:  >-
  Consul API Gateway Basic Usage
---


# Basic Usage

1. Verify that the [requirements](/docs/api-gateway/consul-api-gateway-install#requirments) have been met.
1. Verify that the Consul API Gateway CRDs and controller have been installed and applied (see [Installation](/docs/api-gateway/consul-api-gateway-install)).
1. Configure the artifacts described below in [Configuration](/docs/api-gateway/configuration).

<CodeBlockConfig hideClipboard filename="values.yaml">

  ```yaml
  apiGateway:
    enabled: true
    managedGatewayClass:
  ```

</CodeBlockConfig>

1. Issue the `kubectl apply` command to implement the configurations, e.g.:

```shell-session
$ kubectl apply -f gateway.yaml routes.yaml
```

<!--- Commented out per https://github.com/hashicorp/consul/pull/11951/files#r791204596

### Using the Consul API Gateway Binary

You can download the Consul API Gateway binary and use it to manually start the control plane server.

1. Download the binary from the [Consul API Gateway repository](https://github.com/hashicorp/consul-api-gateway).
1. Navigate to the `consul-api-gateway-main` directory and build the binary:

```shell-session
$ go build
```

1.  (Optional) Copy the binary to the execution path, e.g.:

```shell-session
$ cp consul-api-gateway /usr/bin
```

1.  Use the `server` command to interact with the Consul API Gateway binary:

```shell-session
$ ./consul-api-gateway server <options>
```

The following options are supported:

| Option                 | Description                                                                                                                                                                           | Required | Default                                                                 |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------- |
| `-ca-file`             | String value that specifies the path to the CA for the Consul server.                                                                                                                 | Required | none                                                                    |
| `-ca-secret`           | String value that specifies the CA secret for the Consul server.                                                                                                                      | Required | none                                                                    |
| `-ca-secret-namespace` | String value that specifies the CA secret namespace for the Consul server.                                                                                                            | Required | none                                                                    |
| `-k8-context`          | String value that specifies the Kubernetes context to use when starting the Consul server.                                                                                            | Optional | current context                                                         |
| `-k8-namespace`        | String value that specifies the Kubernetes namespace to use when starting the Consul server.                                                                                          | Optional | `default`                                                               |
| `-log-json`            | Boolean value that enables or disables JSON format for the log output.                                                                                                                | Required | `false`                                                                 |
| `-log-level`           | String value that specifies the logging level. The following values are supported: <br/>- `trace` (highest level of detail) <br/>- `debug` <br/>- `info` <br/>- `warn` <br/>- `error` | Optional | `info`                                                                  |
| `-metrics-port`        | Integer value that specifies the port number for collecting metrics.                                                                                                                  | Optional | none                                                                    |
| `-pprof`               | Integer value that specifies the Go pprof port number for collecting metrics.                                                                                                         | Optional | none                                                                    |
| `-sds-server-host`     | String value that specifies the host server for the secret discovery service (SDS).                                                                                                   | Optional | `consul-api-gateway-controller.default.`<br/>`svc.cluster.`<br/>`local` |
| `-sds-server-host`     | Integer value that specifies the port number for the secret discovery service (SDS).                                                                                                  | Optional | `9090`                                                                  |

You can also issue the `version` command to print the Consul API Gateway version to the console:

```shell-session
$ ./consul-api-gateway version
consul-api-gateway 0.1.0
```
--->

## Error Messages

If the error message is not listed on this page, it may be listed on the main [Consul Common errors][consul-common-errors] page. If the error message is not listed on that page either, please consider following our general [Troubleshooting Guide][troubleshooting] or reach out to us in [Discuss](https://discuss.hashicorp.com/).

<!---
***************************************************************************
Use markdown's Reference-Style links when including hyperlinks. This makes it easier to read the content im markdown.

Each common error should have its own section on this page. Each section
should start with a heading line that is a short description of the error or
the text of the error.

Two examples:
    ### Failed opening file during installation
    ### Message: "Can't connect to repository" when running Helm chart

******** Template for new Error Messages ********
 Copy and paste the following 13 lines when adding a new error message to this page.

### Title for this error

```
Replace with text of example error message
```
**Conditions:**
REPLACE THIS with description of when and why the error is typically seen

**Impact:**
REPLACE THIS with description of most likely impact of the event that caused this error to occur

**Recommended Action:**
REPLACE THIS with the actions the user should take to try to correct the situation

***************************************************************************
--->

### Helm installation failed: "no matches for kind"

```log
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [unable to recognize "": no matches for kind "GatewayClass" in version "gateway.networking.k8s.io/v1alpha2", unable to recognize "": no matches for kind "GatewayClassConfig" in version "api-gateway.consul.hashicorp.com/v1alpha1"]
```
**Conditions:**
When this error occurs during the process of installing Consul API Gateway, it is usually caused by not having the required CRD files installed in Kubernetes prior to installing Consul API Gateway.

**Impact:**
The installation process typically fails after this error message is generated.

**Recommended Action:**
Install the required CRDs by using the command in Step 1 of the [Consul API Gateway installation instructions](/docs/api-gateway/consul-api-gateway-install) and then retry installing Consul API Gateway.

