mrkeyoor.com_
Fri 04 Sept 06:42 UTC
Self-Hostedevaluationupdated 04 Sept 2026

consul review

Consul keeps services in a changing fleet findable, checks whether they are healthy, stores shared configuration, and can control service-to-service traffic. It gives operators one distributed control plane for machines, containers, and multiple data centers instead of hard-coding addresses into applications.

Verdict

Our Consul build passed in 211 seconds, but 25 of 153 package results failed before the test run hit its 900-second cap, so contributors should expect slow full-suite feedback from this large control plane. Use Consul when service discovery must span virtual machines, Kubernetes, and data centers, and when one team can own its security and Raft operations. Choose a narrower Apache-licensed component if you only need a key-value store or Kubernetes mesh, or if BUSL 1.1 conflicts with how you sell your product.

We ran it

Lab card: what happened when we ran consulScreenshot of consul (www.consul.io)
Install✓ · 107s653 packages
Build✓ · 211s
Tests✗ timed out · 900s128 passed · 25 failed of 153 (go test)
Repo11193 files~821,565 lines of source · 43.4 MB · 42 CI workflows · Dockerfile · tests dir

Answers from our run

Does consul build from source?

Dependencies installed in 107 seconds (653 packages), and the build succeeded in 211 seconds. We cloned commit 3db1bb7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do consul's tests pass?

Not all of them: 128 of 153 passed and 25 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use consul?

Companies requiring an OSI-approved open-source license for current releases: Consul 1.17.0 and later use BUSL 1.1, which restricts competing paid hosted or embedded offerings until each version changes to MPL 2.0.

What are the alternatives to consul?

etcd, Istio, Linkerd. Our Consul build passed in 211 seconds, but 25 of 153 package results failed before the test run hit its 900-second cap, so contributors should expect slow full-suite feedback from this large control plane.

Setup2/5Build passes, but production needs quorum, ACLs, TLS, and recovery
Docs5/5Detailed VM, Kubernetes, security, API, and operations guides
Community5/530,055 stars with same-day pushes and active issue and PR work
Maturity4/5Long-lived v2.0.3 system, offset by failed and timed-out tests

Who it’s for

Infrastructure teams that need service discovery and health-aware routing across virtual machines, Kubernetes, or multiple data centers.
Organizations willing to operate a replicated control plane and configure ACLs, TLS, gossip encryption, monitoring, and recovery.
Mixed-platform estates where DNS and HTTP discovery must work outside a single Kubernetes cluster.
Teams that want service discovery, configuration, and a service mesh under one operational model.

Who it’s NOT for

Companies requiring an OSI-approved open-source license for current releases: Consul 1.17.0 and later use BUSL 1.1, which restricts competing paid hosted or embedded offerings until each version changes to MPL 2.0.
Small teams that only need a key-value store or Kubernetes-native service discovery: Consul adds agents, servers, Raft operations, security configuration, and upgrades.
Operators expecting safe production defaults: the official security guide says Consul is not secure by default, and ACLs are disabled until configured.
Contributors who need quick full-suite feedback on a modest machine: our 3-CPU run reached the 900-second limit with 25 of 153 package results failing.
Applications seeking a general database: HashiCorp's server requirements explicitly say the Consul key-value store is not designed for that job.

Setup reality

Our sandbox installed 653 Go packages in 107 seconds, then built Consul successfully in 211 seconds. The test command timed out at 900 seconds: 128 package results passed and 25 failed out of 153. The supplied log tail ends with successful command-package results, including join, kv, leave, and lock, so it does not identify a cause for the 25 failures.

Running one binary for development is easy. Production needs server agents, a shared bootstrap count, stable node addressing or cloud auto-join credentials, persistent data disks, and client or dataplane connections. A secured deployment also needs ACL bootstrap and workload tokens, a gossip encryption key, a private CA, and mTLS certificates. Service mesh use adds proxies or gateways.

Consul supports several operating systems, but the operational burden is distributed-systems work: Raft quorum, network latency, backups, upgrades, token rotation, certificate rotation, and capacity planning. The v2.0 security guide says the default setup is not secure. Current releases also use BUSL 1.1 rather than an OSI-approved license, so paid hosted or embedded products need a license review.

Version 2.0.3 combines discovery, health, configuration, and traffic control

Consul v2.0.3 addresses a problem that appears once service addresses stop being stable. Workloads register with agents, health checks describe whether they should receive traffic, and clients query the catalog through DNS or HTTP. The same system can hold indexed configuration objects and connect services through encrypted, identity-aware proxies. An API gateway handles traffic entering the mesh.

The breadth is useful in mixed estates. A 43.4 MB checkout contains the control plane for Linux, macOS, FreeBSD, Solaris, and Windows, with an optional browser interface. Consul can register external services as well as software running beside an agent. Multi-datacenter support makes it more suitable than a Kubernetes-only registry when applications span clusters, virtual machines, and older hosts. That reach also creates more failure modes than a single-cluster tool.

What happened when we ran it

Our sandbox installed 653 Go packages in 107 seconds and built commit 3db1bb7 successfully in 211 seconds. The checkout contained 11,193 files, roughly 821,565 lines of source, and 42 CI workflow files. A Dockerfile and tests directory were present. These measurements came from an unprivileged Go 1.24 Bookworm container with 3 CPUs, 8 GB of RAM, and no secrets.

The full test command did not finish within 900 seconds. Go reported 128 passed and 25 failed package results out of 153 before the timeout. The supplied tail contains successful results for command packages such as join, keygen, keyring, several kv commands, leave, and lock. It does not show the error behind the failed packages, so blaming a missing service or flaky test would go beyond our run.

The practical finding is that a clean install and build can pass while the complete suite remains a long, failing job on a 3-CPU machine. HashiCorp's contributor guide recommends targeted package tests and the short flag during development, which fits what we measured. Our measurement method used the repository's Go path. It did not form a Consul cluster, register services, or test failover and request latency.

Production starts with 1 to 5 servers and security you enable

HashiCorp's v2.0 VM guide describes a server cluster of 1 to 5 Consul servers in one cloud region. The nodes must agree on the expected bootstrap count, join one another, elect a Raft leader, and retain persistent state. One server is suitable for development, while a production design has to survive node failure. DNS, fixed addresses, or cloud auto-join can help later agents find the cluster.

Security is an explicit setup phase. The v2.0 guide says Consul is not secure by default, and its ACL guide says ACLs start disabled. Operators need gossip encryption for membership traffic, mTLS for Raft, RPC, API, CLI, and UI traffic, plus ACL tokens for resource access. The recommended ACL default is deny. Bootstrap credentials, agent tokens, the private CA, and certificate rotation all become operational assets.

A 512 KB key limit keeps Consul out of the database role

Consul stores its catalog, key-value entries, access rules, and sessions in memory, then persists changes through Raft snapshots and logs. The official VM requirements set a 512 KB limit per key value and explicitly warn against using Consul as a general-purpose database. This store fits feature flags, service configuration, locks, and coordination data. Application records belong in a database built for their query and retention needs.

Server sizing depends on the workload rather than the 211-second build. Writes wait for disk synchronization on a quorum, while reads use CPU and memory. HashiCorp recommends at least 2 cores and enough RAM for 2 to 4 times the working set. Operators also choose consistency modes, monitor leader contact, protect file-descriptor limits, and test snapshots. A green health page cannot replace a restore exercise.

BUSL 1.1 permits internal production use but restricts competitors

Consul 1.17.0 and later use the Business Source License 1.1. The additional grant allows production use unless the product is a paid competitive offering that hosts or embeds Consul. Internal use within an organization is permitted. Each version changes to MPL 2.0 after 4 years. That is source-available licensing with delayed open-source terms, not the Apache-style permission many infrastructure buyers expect.

The licensing question is concrete for vendors. A company running Consul internally can stay within the stated additional grant, while a company packaging it into a paid overlapping service must assess the restriction or obtain another license. Legal review is cheaper than designing around the wrong assumption. Etcd, Istio, and Linkerd use Apache 2.0, though none replaces the full catalog, configuration, and cross-platform mesh combination by itself.

September 2026 work is active, with 1,424 issues and PRs open

GitHub recorded 30,055 stars, 1,424 combined issues and pull requests, and a last push on September 4, 2026. The queue is large, but same-day pull request updates include dependency and security work. Release v2.0.3 shipped on August 7, 2026. Its notes contain dependency advisory fixes and changes for denial of service, ACL-token logging, request size limits, and path normalization.

Those dates show active maintenance, while the release content shows why upgrades need care. Consul sits in discovery and traffic paths, and v2.0.3 changes security behavior as well as dependencies. Our 900-second timeout also makes local verification expensive. Teams adopting it should pin versions, read security notes, stage upgrades against representative registrations and policies, and keep a tested snapshot procedure. Consul pays for that work only when its broad control plane replaces several narrower systems.

Alternatives

ProjectWhat it isPick it when
etcd gh↗An Apache-licensed distributed key-value store used for critical coordination data.pick this instead when you need a focused coordination store and will get service discovery or mesh behavior elsewhere.
Istio gh↗A Kubernetes-centered service mesh for traffic policy, identity, and observability.pick this instead when Kubernetes service networking is the main problem and Consul's cross-platform catalog is unnecessary.
LinkerdAn Apache-licensed Kubernetes service mesh with a narrower networking focus.pick this instead when you want a Kubernetes-only mesh and do not need Consul's key-value or multi-datacenter control plane.

What people are saying

  1. [velocity-scout] hashicorp/consul

Sources

  1. Consul repository
  2. Consul README
  3. Consul Business Source License 1.1
  4. Consul v2.0.3 release notes
  5. Secure Consul
  6. Consul server requirements on VMs
  7. Consul issues and pull requests

More self-hosted reviews

project-nomad · gpt-load · limusic · xbmc · owncast · crowdsec · the whole board →