Commit Graph

36 Commits

Author SHA1 Message Date
Dan Upton d4c435856b
grpc: `protoc` plugin for generating gRPC rate limit specifications (#15564)
Adds automation for generating the map of `gRPC Method Name → Rate Limit Type`
used by the middleware introduced in #15550, and will ensure we don't forget
to add new endpoints.

Engineers must annotate their RPCs in the proto file like so:

```
rpc Foo(FooRequest) returns (FooResponse) {
  option (consul.internal.ratelimit.spec) = {
    operation_type: READ,
  };
}
```

When they run `make proto` a protoc plugin `protoc-gen-consul-rate-limit` will
be installed that writes rate-limit specs as a JSON array to a file called
`.ratelimit.tmp` (one per protobuf package/directory).

After running Buf, `make proto` will execute a post-process script that will
ingest all of the `.ratelimit.tmp` files and generate a Go file containing the
mappings in the `agent/grpc-middleware` package. In the enterprise repository,
it will write an additional file with the enterprise-only endpoints.

If an engineer forgets to add the annotation to a new RPC, the plugin will
return an error like so:

```
RPC Foo is missing rate-limit specification, fix it with:

	import "proto-public/annotations/ratelimit/ratelimit.proto";

	service Bar {
	  rpc Foo(...) returns (...) {
	    option (hashicorp.consul.internal.ratelimit.spec) = {
	      operation_type: OPERATION_READ | OPERATION_WRITE | OPERATION_EXEMPT,
	    };
	  }
	}
```

In the future, this annotation can be extended to support rate-limit
category (e.g. KV vs Catalog) and to determine the retry policy.
2023-01-04 16:07:02 +00:00
Dan Upton 7747384f1f
Wire in rate limiter to handle internal and external gRPC calls (#15857) 2022-12-23 13:42:16 -06:00
Semir Patel bafa5c7156
Pass remote addr of incoming HTTP requests through to RPC(..) calls (#15700) 2022-12-14 09:24:22 -06:00
DanStough dfd50d68ed chore: ignore vscode files 2022-07-25 12:31:58 -04:00
DanStough 8cddaef47b changelog: snapshot-agent acl token fix for CLI and ENV 2022-04-25 16:46:55 -04:00
R.B. Boyer 82bfc04f87
build: auto install correct version of protoc locally (#12651) 2022-03-30 10:08:17 -05:00
Kyle MacDonald 6216eed571
website: remove netlify artifacts and port missing redirects over to new format (#9601)
* website: port existing new redirects old format

* website: remove netlify specific artifacts
2021-01-21 10:16:17 -05:00
Alvin Huang d726098b61 add terraform files to gitignore 2021-01-13 23:19:30 -05:00
Kit Patella 44280103ee
.gitignore: cut IDE-specific entries, cleanup (#7083)
* .gitignore: add vscode and MacOS-specific files. add a little org

* .gitignore: remove IDE-specific ignores, add docs
2020-01-17 11:06:33 -08:00
R.B. Boyer 734b6287b8
build: prevent 'make tools' from editing go.mod and go.sum (#6738) 2019-11-05 09:25:46 -06:00
Todd Radel 2552f4a11a
connect: Support RSA keys in addition to ECDSA (#6055)
Support RSA keys in addition to ECDSA
2019-07-30 17:47:39 -04:00
Freddy b2c12550d7
Remove old UI, option to use it, and its build processes 2019-04-12 09:02:27 -06:00
Paul Banks c9217c958e merge feedback: fix typos; actually use deliverLatest added previously but not plumbed in 2018-10-10 16:55:34 +01:00
Matt Keeler 9a7bfc4e39 Update .gitignore - ignore some macos fs event notification stuff 2018-05-24 10:34:23 -04:00
Frank Schroeder a61929a597 build: add changelogfmt target to format [GH-xxxx] references to links 2017-10-04 21:14:16 +02:00
James Phillips 5be3708f50 Removes "consul" from .gitignore.
This was missing a lot of local changes during development (added files, etc.).
2017-07-31 14:58:35 -07:00
Frank Schroeder 4d4df3c69e
update .gitignore 2017-07-11 16:16:55 -07:00
Frank Schroeder 61ca9b02d4 build: build all packages together
Build all packages together with a global timeout. Locally,
the tests pass within 40 sec. On travis, we complete within
3-4 min.

travis truncates the logs after 4MB which we are hitting so
show the relevant information first and then whatever is left.
2017-07-07 09:22:34 +02:00
Frank Schroeder 7b4302690a build: cleanup .gitignore 2017-04-27 10:34:30 -07:00
Frank Schroeder 9c632e4eb7 build: Simplify make test and log output 2017-04-27 10:34:30 -07:00
Seth Vargo 6c528f0ff2 Use gox for building 2015-10-22 14:16:01 -04:00
Seth Vargo ffb4cb25a4 Update middleman-hashicorp 2015-04-26 15:29:48 -04:00
Ryan Uber 8e09016aee Ignore vim swap files 2015-01-07 15:21:01 -08:00
Jack Pearkes 437fe2ffb1 ui: ignore compiled js, dist 2014-05-01 11:22:30 -04:00
Jack Pearkes 63854075d8 ui: use a /static directory 2014-04-30 23:43:55 -04:00
Jack Pearkes 28ac20cb78 ui: initial commit 2014-04-30 23:43:55 -04:00
Mitchell Hashimoto 3e100a29c9 scripts: dist script 2014-04-16 16:53:26 -07:00
Mitchell Hashimoto 23de3d51ac website: update gemfile lock and add version text 2014-04-14 15:17:33 -07:00
Mitchell Hashimoto bf6255519d Ignore the website build dir 2014-04-14 15:12:23 -07:00
Mitchell Hashimoto 0d1a0fd575 website: some vs copy changes 2014-04-14 11:58:55 -07:00
Armon Dadgar f02ae31041 website: More info on TLS encryption 2014-04-07 15:07:21 -07:00
JT 5a522dd061 homepage 2014-04-05 02:03:01 -07:00
Armon Dadgar eb4724e47b Updated gitignore 2014-03-20 13:10:27 -07:00
Armon Dadgar 1c5a8d01b1 Adding basic CLI infrastructure 2013-12-19 11:22:08 -08:00
Armon Dadgar fba2990e48 ignore test files 2013-12-09 12:10:37 -08:00
Armon Dadgar 0a7996bc4f Initial commit 2013-11-04 14:15:27 -08:00