open-consul/api
Freddy 5eace88ce2
Expose HTTP-based paths through Connect proxy (#6446)
Fixes: #5396

This PR adds a proxy configuration stanza called expose. These flags register
listeners in Connect sidecar proxies to allow requests to specific HTTP paths from outside of the node. This allows services to protect themselves by only
listening on the loopback interface, while still accepting traffic from non
Connect-enabled services.

Under expose there is a boolean checks flag that would automatically expose all
registered HTTP and gRPC check paths.

This stanza also accepts a paths list to expose individual paths. The primary
use case for this functionality would be to expose paths for third parties like
Prometheus or the kubelet.

Listeners for requests to exposed paths are be configured dynamically at run
time. Any time a proxy, or check can be registered, a listener can also be
created.

In this initial implementation requests to these paths are not
authenticated/encrypted.
2019-09-25 20:55:52 -06:00
..
watch api/watch: try to avoid more flakes in this package (#6538) 2019-09-24 11:24:48 -05:00
acl.go ACL Token ID Initialization (#5307) 2019-04-30 11:45:36 -04:00
acl_test.go Update retries that weren't using retry.R (#6146) 2019-07-16 14:47:45 -06:00
agent.go Expose HTTP-based paths through Connect proxy (#6446) 2019-09-25 20:55:52 -06:00
agent_test.go Expose HTTP-based paths through Connect proxy (#6446) 2019-09-25 20:55:52 -06:00
api.go add flag to allow /operator/keyring requests to only hit local servers (#6279) 2019-08-12 11:11:11 -07:00
api_test.go add flag to allow /operator/keyring requests to only hit local servers (#6279) 2019-08-12 11:11:11 -07:00
catalog.go connect: remove managed proxies (#6220) 2019-08-09 15:19:30 -04:00
catalog_test.go connect: remove managed proxies (#6220) 2019-08-09 15:19:30 -04:00
config_entry.go Expose HTTP-based paths through Connect proxy (#6446) 2019-09-25 20:55:52 -06:00
config_entry_discoverychain.go connect: ensure time.Duration fields retain their human readable forms in the API (#6348) 2019-08-19 15:31:05 -05:00
config_entry_discoverychain_test.go connect: change router syntax for matching query parameters to resemble the syntax for matching paths and headers for consistency. (#6163) 2019-07-23 20:55:26 -05:00
config_entry_test.go Expose HTTP-based paths through Connect proxy (#6446) 2019-09-25 20:55:52 -06:00
connect.go
connect_ca.go
connect_ca_test.go Merge pull request #5376 from hashicorp/fix-tests 2019-04-04 17:09:32 -04:00
connect_intention.go Implement Mesh Gateways 2019-07-01 16:28:30 -04:00
connect_intention_test.go Implement Mesh Gateways 2019-07-01 16:28:30 -04:00
coordinate.go
coordinate_test.go Merge pull request #5376 from hashicorp/fix-tests 2019-04-04 17:09:32 -04:00
debug.go
debug_test.go Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
discovery_chain.go connect: ensure time.Duration fields retain their human readable forms in the API (#6348) 2019-08-19 15:31:05 -05:00
discovery_chain_test.go connect: generate the full SNI names for discovery targets in the compiler rather than in the xds package (#6340) 2019-08-19 13:03:03 -05:00
event.go
event_test.go Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
go.mod api: bump to sdk v0.2.0 2019-08-23 16:41:19 -05:00
go.sum api: bump to sdk v0.2.0 2019-08-23 16:41:19 -05:00
health.go
health_test.go Fix some retries in api pkg (#6124) 2019-07-12 12:57:41 -06:00
kv.go
kv_test.go
lock.go
lock_test.go Merge Consul OSS branch 'master' at commit 95dbb7f2f1b9fc3528a16335201e2324f1b388bd 2019-07-17 02:00:21 +00:00
operator.go
operator_area.go
operator_autopilot.go
operator_autopilot_test.go Update retries that weren't using retry.R (#6146) 2019-07-16 14:47:45 -06:00
operator_keyring.go
operator_keyring_test.go Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
operator_license.go Add missing LicenseReset API function (#6311) 2019-08-12 15:24:02 -04:00
operator_raft.go
operator_raft_test.go
operator_segment.go
prepared_query.go
prepared_query_test.go Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
raw.go
README.md
semaphore.go
semaphore_test.go
session.go
session_test.go
snapshot.go
snapshot_test.go
status.go
status_test.go
txn.go
txn_test.go More flaky test fixes (#6151) 2019-07-17 09:33:38 -06:00

Consul API client

This package provides the api package which attempts to provide programmatic access to the full Consul API.

Currently, all of the Consul APIs included in version 0.6.0 are supported.

Documentation

The full documentation is available on Godoc

Usage

Below is an example of using the Consul client:

package main

import "github.com/hashicorp/consul/api"
import "fmt"

func main() {
	// Get a new client
	client, err := api.NewClient(api.DefaultConfig())
	if err != nil {
		panic(err)
	}

	// Get a handle to the KV API
	kv := client.KV()

	// PUT a new KV pair
	p := &api.KVPair{Key: "REDIS_MAXCLIENTS", Value: []byte("1000")}
	_, err = kv.Put(p, nil)
	if err != nil {
		panic(err)
	}

	// Lookup the pair
	pair, _, err := kv.Get("REDIS_MAXCLIENTS", nil)
	if err != nil {
		panic(err)
	}
	fmt.Printf("KV: %v %s\n", pair.Key, pair.Value)
}

To run this example, start a Consul server:

consul agent -dev

Copy the code above into a file such as main.go.

Install and run. You'll see a key (REDIS_MAXCLIENTS) and value (1000) printed.

$ go get
$ go run main.go
KV: REDIS_MAXCLIENTS 1000

After running the code, you can also view the values in the Consul UI on your local machine at http://localhost:8500/ui/dc1/kv