Go to file
Matt Keeler f3c80c4eef
Protobuf Refactoring for Multi-Module Cleanliness (#16302)
Protobuf Refactoring for Multi-Module Cleanliness

This commit includes the following:

Moves all packages that were within proto/ to proto/private
Rewrites imports to account for the packages being moved
Adds in buf.work.yaml to enable buf workspaces
Names the proto-public buf module so that we can override the Go package imports within proto/buf.yaml
Bumps the buf version dependency to 1.14.0 (I was trying out the version to see if it would get around an issue - it didn't but it also doesn't break things and it seemed best to keep up with the toolchain changes)

Why:

In the future we will need to consume other protobuf dependencies such as the Google HTTP annotations for openapi generation or grpc-gateway usage.
There were some recent changes to have our own ratelimiting annotations.
The two combined were not working when I was trying to use them together (attempting to rebase another branch)
Buf workspaces should be the solution to the problem
Buf workspaces means that each module will have generated Go code that embeds proto file names relative to the proto dir and not the top level repo root.
This resulted in proto file name conflicts in the Go global protobuf type registry.
The solution to that was to add in a private/ directory into the path within the proto/ directory.
That then required rewriting all the imports.

Is this safe?

AFAICT yes
The gRPC wire protocol doesn't seem to care about the proto file names (although the Go grpc code does tack on the proto file name as Metadata in the ServiceDesc)
Other than imports, there were no changes to any generated code as a result of this.
2023-02-17 16:14:46 -05:00
.changelog [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
.circleci [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
.github [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
.release Onboard consul to use new version/VERSION file and reproducible actions (#15631) 2023-01-05 12:16:47 -08:00
acl Synthesize anonymous token pre-bootstrap when needed (#16200) 2023-02-09 20:34:02 +00:00
agent Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
api [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
bench Gets benchmarks running again and does a rough pass for 0.7.1. 2016-11-29 13:02:26 -08:00
build-support Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
command [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
connect Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
contributing Move contributing to docs 2021-08-30 16:17:09 -04:00
docs Adding experimental support for a more efficient LogStore implementation (#16176) 2023-02-08 16:50:22 +00:00
envoyextensions [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
grafana add readme outlining how to edit and publish 2021-01-12 14:47:11 -08:00
internal Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
ipaddr Ensure Consul is IPv6 compliant (#5468) 2019-06-04 10:02:38 -04:00
lib [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
logging Run config entry controller routines on leader (#16054) 2023-01-25 12:21:46 -06:00
proto Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
proto-public Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
sdk [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
sentinel re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
service_os re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
snapshot removes ioutil usage everywhere which was deprecated in go1.16 (#15297) 2022-11-10 10:26:01 -06:00
test [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
testrpc Pass remote addr of incoming HTTP requests through to RPC(..) calls (#15700) 2022-12-14 09:24:22 -06:00
tlsutil Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
tools/internal-grpc-proxy grpc: rename public/private directories to external/internal (#13721) 2022-07-13 16:33:48 +01:00
troubleshoot [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
types agent: convert listener config to TLS types (#12522) 2022-03-24 15:32:25 -04:00
ui UI: CC-4032 - Update sidebar width (#16204) 2023-02-13 11:48:31 -07:00
version [OSS] Post Consul 1.15 updates (#16256) 2023-02-14 14:44:55 -05:00
website Docs/reformat service splitters conf entry (#16264) 2023-02-15 14:37:32 -08:00
.dockerignore Update the scripting 2018-06-14 21:42:47 -04:00
.gitattributes Initial commit 2013-11-04 14:15:27 -08:00
.gitignore grpc: `protoc` plugin for generating gRPC rate limit specifications (#15564) 2023-01-04 16:07:02 +00:00
.golangci.yml removes ioutil usage everywhere which was deprecated in go1.16 (#15297) 2022-11-10 10:26:01 -06:00
CHANGELOG.md Changelog for Consul 1.14.4, 1.13.6, and 1.12.9 (#16098) 2023-01-27 16:41:07 -06:00
Dockerfile Force installation of shadow-utils for access to groupadd executable in ubi image (#15812) 2022-12-15 12:42:22 -06:00
GNUmakefile Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
LICENSE [COMPLIANCE] Update MPL-2.0 LICENSE (#14964) 2022-11-09 12:24:14 -06:00
NOTICE.md add copyright notice file 2018-07-09 10:58:26 -07:00
README.md Fixed broken links referring to tutorials running as local agent (#14954) 2022-10-11 13:01:29 -07:00
Vagrantfile Adds a basic Linux Vagrant setup, stolen from Nomad. 2017-10-06 08:10:12 -07:00
buf.work.yaml Protobuf Refactoring for Multi-Module Cleanliness (#16302) 2023-02-17 16:14:46 -05:00
fixup_acl_move.sh Fixup script 2 2022-04-05 14:52:43 -07:00
go.mod [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00
go.sum Bump x/time to 0.3.0 and fix related breakage linked to RPCRateLimit (#16241) 2023-02-13 11:11:51 -06:00
main.go [OSS] security: update go to 1.20.1 (#16263) 2023-02-17 15:04:12 -05:00

README.md

Consul logo Consul

Docker Pulls Go Report Card

Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.

Consul provides several key features:

  • Multi-Datacenter - Consul is built to be datacenter aware, and can support any number of regions without complex configuration.

  • Service Mesh - Consul Service Mesh enables secure service-to-service communication with automatic TLS encryption and identity-based authorization. Applications can use sidecar proxies in a service mesh configuration to establish TLS connections for inbound and outbound connections with Transparent Proxy.

  • Service Discovery - Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. External services such as SaaS providers can be registered as well.

  • Health Checking - Health Checking enables Consul to quickly alert operators about any issues in a cluster. The integration with service discovery prevents routing traffic to unhealthy hosts and enables service level circuit breakers.

  • Key/Value Storage - A flexible key/value store enables storing dynamic configuration, feature flagging, coordination, leader election and more. The simple HTTP API makes it easy to use anywhere.

Consul runs on Linux, macOS, FreeBSD, Solaris, and Windows and includes an optional browser based UI. A commercial version called Consul Enterprise is also available.

Please note: We take Consul's security and our users' trust very seriously. If you believe you have found a security issue in Consul, please responsibly disclose by contacting us at security@hashicorp.com.

Quick Start

A few quick start guides are available on the Consul website:

Documentation

Full, comprehensive documentation is available on the Consul website: https://consul.io/docs

Contributing

Thank you for your interest in contributing! Please refer to CONTRIBUTING.md for guidance. For contributions specifically to the browser based UI, please refer to the UI's README.md for guidance.