# gRPC Settings

Pomerium's gRPC settings apply to internal communication between:

- Pomerium services running in [split service mode].
- The Enterprise Console and core Pomerium in a [Pomerium Enterprise](https://www.pomerium.com/docs/deploy/enterprise.md) deployment.

These settings have no effect on gRPC traffic proxied on a regular Pomerium route.

- [gRPC Address](#grpc-address)
- [gRPC Client Timeout](#grpc-client-timeout)
- [gRPC Insecure](#grpc-insecure)

## gRPC Address

**gRPC Address** specifies the IP address and port for the internal gRPC service to listen on.

### How to configure

**Core:**

| **Config file keys** | **Environment variables** | **Type** | **Default** |
| :-- | :-- | :-- | :-- |
| `grpc_address` | `GRPC_ADDRESS` | `string` | `:5443` in all-in-one mode <br /> `:443` in [split service mode] |

### Examples

```yaml
grpc_address: :8443
```

```bash
GRPC_ADDRESS=:8443
```

**Enterprise:**

**Kubernetes:**

**gRPC Address** is not customizable with Kubernetes

## gRPC Client Timeout

**gRPC Client Timeout** sets the maximum time before canceling an upstream gRPC request. During transient failures, the proxy will retry upstream servers for this duration. You should leave this high enough to handle backend service restart and rediscovery so that client requests do not fail.

### How to configure

**Core:**

| **Config file keys** | **Environment variables** | **Type** | **Default** |
| :-- | :-- | :-- | :-- |
| `grpc_client_timeout` | `GRPC_CLIENT_TIMEOUT` | `string` ([Go Duration](https://golang.org/pkg/time/#Duration.String) formatting) | `10s` |

### Examples

```yaml
grpc_client_timeout: 15s
```

```bash
GRPC_CLIENT_TIMEOUT=15s
```

**Enterprise:**

`grpc_client_timeout` is a bootstrap configuration setting and is not configurable in the Console.

**Kubernetes:**

Kubernetes does not support **gRPC Client Timeout**

## gRPC Insecure

**gRPC Insecure** disables transport security (TLS) for internal gRPC communication.

### How to configure

**Core:**

| **Config file keys** | **Environment variables** | **Type** | **Default** |
| :-- | :-- | :-- | :-- |
| `grpc_insecure` | `GRPC_INSECURE` | `boolean` | `true` in all-in-one mode <br /> `false` in [split service mode] |

### Examples

```yaml
grpc_insecure: false
```

```bash
GRPC_INSECURE=false
```

**Enterprise:**

**Kubernetes:**

**gRPC Insecure** is not customizable in Kubernetes

[split service mode]: https://www.pomerium.com/docs/internals/configuration.md#all-in-one-vs-split-service-mode
