Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure. https://www.consul.io
Go to file
Dhia Ayachi 4488b6c339
Add versions compatibility tests between Consul (#12702)
* add a sample

* Consul cluster test

* add build dockerfile

* add tests to cover mixed versions tests

* use flag to pass docker image name

* remove default config and rely on flags to inject the right image to test

* add cluster abstraction

* fix imports and remove old files

* fix imports and remove old files

* fix dockerIgnore

* make a `Node interface` and encapsulate ConsulContainer

* fix a test bug where we only check the leader against a single node.

* add upgrade tests to CI

* fix yaml alignment

* fix alignment take 2

* fix flag naming

* fix image to build

* fix test run and go mod tidy

* add a debug command

* run without RYUK

* fix parallel run

* add skip reaper code

* make tempdir in local dir

* chmod the temp dir to 0777

* chmod the right dir name

* change executor to use machine instead of docker

* add docker layer caching

* remove setup docker

* add gotestsum

* install go version

* use variable for GO installed version

* add environment

* add environment in the right place

* do not disable RYUK in CI

* add service check to tests

* assertions outside routines

* add queryBackend to the api query meta.

* check if we are using the right backend  for those tests (streaming)

* change the tested endpoint to use one that have streaming.

* refactor to test multiple scenarios for streaming

* Fix dockerfile

Co-authored-by: FFMMM <FFMMM@users.noreply.github.com>

* rename Clients to clients

Co-authored-by: FFMMM <FFMMM@users.noreply.github.com>

* check if cluster have 0 node

* tidy code and add some doc strings

* use uuid instead of random string

* add doc strings to tests

* add queryBackend to the api query meta.

* add a changelog

* fix for api backend query

* add missing require

* fix q.QueryBackend

* Revert "fix q.QueryBackend"

This reverts commit cd0e5f7b1a1730e191673d624f8e89b591871c05.

* fix circle ci config

* tidy go mod after merging main

* rename package and fix test scenario

* update go download url

* address review comments

* rename flag in CI

* add readme to the upgrade tests

* fix golang download url

* fix golang arch downloaded

* fix AddNodes to handle an empty cluster case

* use `parseBool`

* rename circle job and add comment

* update testcontainer to 0.13

* fix circle ci config

* remove build docker file and use `make dev-docker` instead

* Apply suggestions from code review

Co-authored-by: Dan Upton <daniel@floppy.co>

* fix a typo

Co-authored-by: FFMMM <FFMMM@users.noreply.github.com>
Co-authored-by: Dan Upton <daniel@floppy.co>
2022-04-25 10:41:36 -04:00
.changelog update raft to v1.3.8 (#12844) 2022-04-25 10:19:26 -04:00
.circleci Add versions compatibility tests between Consul (#12702) 2022-04-25 10:41:36 -04:00
.github add a general pull request template (#12827) 2022-04-22 12:41:44 -07:00
.release docs: fix yet more references to agent/options 2022-04-11 17:38:49 -07:00
acl peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
agent update raft to v1.3.8 (#12844) 2022-04-25 10:19:26 -04:00
api peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
bench
build-support Update go version to 1.18.1 2022-04-18 11:41:10 -04:00
command connect: Add Envoy 1.22 to integration tests, remove Envoy 1.18 (#12805) 2022-04-18 09:36:07 -07:00
connect Update go version to 1.18.1 2022-04-18 11:41:10 -04:00
contributing Move contributing to docs 2021-08-30 16:17:09 -04:00
docs docs: simplify agent docs slugs 2022-04-11 17:38:47 -07:00
grafana add readme outlining how to edit and publish 2021-01-12 14:47:11 -08:00
internal Add timeout to Client RPC calls (#11500) 2022-04-21 16:21:35 -04:00
ipaddr Ensure Consul is IPv6 compliant (#5468) 2019-06-04 10:02:38 -04:00
lib routine: fix that acl stops replicating after regaining leadership (#12295) (#12565) 2022-04-05 14:17:53 -04:00
logging peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
proto peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
proto-public Implement the ServerDiscovery.WatchServers gRPC endpoint (#12819) 2022-04-21 12:56:18 -04:00
sdk Update go version to 1.18.1 2022-04-18 11:41:10 -04: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 Vendor in rpc mono repo for net/rpc fork, go-msgpack, msgpackrpc. (#12311) 2022-02-14 09:45:45 -08:00
test Add versions compatibility tests between Consul (#12702) 2022-04-25 10:41:36 -04:00
testrpc peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
tlsutil Update go version to 1.18.1 2022-04-18 11:41:10 -04:00
types agent: convert listener config to TLS types (#12522) 2022-03-24 15:32:25 -04:00
ui ui:fixed bug where license was showing in oss (#12795) 2022-04-18 13:05:16 -07:00
version update main to reflect it is v1.12.0-dev (#12157) 2022-01-21 15:03:11 -06:00
website Update to sentinel.mdx 2022-04-22 13:20:08 -05:00
.dockerignore Update the scripting 2018-06-14 21:42:47 -04:00
.gitignore build: auto install correct version of protoc locally (#12651) 2022-03-30 10:08:17 -05:00
.golangci.yml ci: Add explanation in forbidigo (#12140) 2022-01-20 13:07:10 -05:00
CHANGELOG.md Update changelog for 1.12.0 2022-04-20 17:10:03 -07:00
Dockerfile Update docker image base to alpine:3.15 (#12276) 2022-02-04 13:56:39 -08:00
GNUmakefile Add versions compatibility tests between Consul (#12702) 2022-04-25 10:41:36 -04:00
LICENSE
NOTICE.md add copyright notice file 2018-07-09 10:58:26 -07:00
README.md Adjust README header to work in light and dark modes 2022-02-07 16:46:46 -08:00
Vagrantfile
fixup_acl_move.sh Fixup script 2 2022-04-05 14:52:43 -07:00
go.mod update raft to v1.3.8 (#12844) 2022-04-25 10:19:26 -04:00
go.sum update raft to v1.3.8 (#12844) 2022-04-25 10:19:26 -04:00
main.go cmd: introduce a shim to expose Stdout/Stderr writers 2021-06-02 16:51:34 -04: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/Service Segmentation - Consul Connect 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 without being aware of Connect at all.

  • 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://www.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.