Consul Connect Expose
Command: consul connect expose
The connect expose subcommand is used to expose a mesh-enabled service through an Ingress gateway by modifying the gateway's configuration and adding an intention to allow traffic from the gateway to the service. See the Ingress gateway documentation for more information about Ingress gateways.
Usage: consul connect expose [options] Exposes a mesh-enabled service through the given ingress gateway, using the given protocol and port.
Command Options
-ingress-gateway
- (Required) The name of the ingress gateway service to use. A partition and namespace can optionally be specified as a prefix via the '[[partition/]namespace]/service' format. If a partition is not specified 'default' is assumed. If a partition is specified a namespace must be specified. Partitions and namespaces are Enterprise features.-port
- (Required) The listener port to use for the service on the Ingress gateway.-service
- (Required) The name of destination service to expose. A namespace can optionally be specified as a prefix via the '[[partition/]namespace]/service' format. If a partition is not specified 'default' is assumed. If a partition is specified a namespace must be specified. Partitions and namespaces are Enterprise features.-protocol
- The protocol for the service. Defaults to 'tcp'.-host
- Additional DNS hostname to use for routing to this service. Can be specified multiple times.
API Options
-ca-file=<value>
- Path to a CA file to use for TLS when communicating with Consul. This can also be specified via theCONSUL_CACERT
environment variable.-ca-path=<value>
- Path to a directory of CA certificates to use for TLS when communicating with Consul. This can also be specified via theCONSUL_CAPATH
environment variable.-client-cert=<value>
- Path to a client cert file to use for TLS whenverify_incoming
is enabled. This can also be specified via theCONSUL_CLIENT_CERT
environment variable.-client-key=<value>
- Path to a client key file to use for TLS whenverify_incoming
is enabled. This can also be specified via theCONSUL_CLIENT_KEY
environment variable.-http-addr=<addr>
- Address of the Consul agent with the port. This can be an IP address or DNS address, but it must include the port. This can also be specified via theCONSUL_HTTP_ADDR
environment variable. In Consul 0.8 and later, the default value is http://127.0.0.1:8500, and https can optionally be used instead. The scheme can also be set to HTTPS by setting the environment variableCONSUL_HTTP_SSL=true
. This may be a unix domain socket usingunix:///path/to/socket
if the agent is configured to listen that way.-tls-server-name=<value>
- The server name to use as the SNI host when connecting via TLS. This can also be specified via theCONSUL_TLS_SERVER_NAME
environment variable.-token=<value>
- ACL token to use in the request. This can also be specified via theCONSUL_HTTP_TOKEN
environment variable. If unspecified, the query will default to the token of the Consul agent at the HTTP address.-token-file=<value>
- File containing the ACL token to use in the request instead of one specified via the-token
argument orCONSUL_HTTP_TOKEN
environment variable. This can also be specified via theCONSUL_HTTP_TOKEN_FILE
environment variable.
-datacenter=<name>
- Name of the datacenter to query. If unspecified, the query will default to the datacenter of the Consul agent at the HTTP address.-stale
- Permit any Consul server (non-leader) to respond to this request. This allows for lower latency and higher throughput, but can result in stale data. This option has no effect on non-read operations. The default value is false.
Examples
The example below shows using the expose
command to make the foo
service available
through the Ingress gateway service ingress
. The protocol argument is optional and
defaults to tcp
if not provided.
$ consul connect expose -service=foo -ingress-gateway=ingress -port 8888 -protocol=tcpSuccessfully updated config entry for ingress service "ingress"Successfully set up intention for "ingress" -> "foo"
Running the command again when the config entry/intention are already set up will result in a no-op:
$ consul connect expose -service=foo -ingress-gateway=ingress -port 8888 -protocol=tcpService "foo" already exposed through listener with port 8888Intention already exists for "ingress" -> "foo"