// the find
hashicorp/consul
Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
Consul is HashiCorp's service mesh and service discovery platform — it handles health-checked service registration, DNS/HTTP-based discovery, mTLS between services via Envoy sidecars, and a KV store for dynamic config. It's aimed at teams running distributed systems across multiple datacenters or Kubernetes clusters who need something more opinionated than raw DNS but less locked-in than a cloud-native solution.
Multi-datacenter support is a first-class concept, not an afterthought — WAN gossip and datacenter-aware routing are built into the core protocol. The health check model is genuinely flexible: script, HTTP, TCP, gRPC, and TTL checks all work, and failing checks pull services from the catalog automatically. The Raft-based consensus for the catalog means you get a consistent view of service state across the cluster without running a separate coordination service. Transparent proxy mode with Envoy sidecars means you can retrofit mTLS into existing services without changing application code.
The license changed to BUSL-1.1 in 2023, which means it's not truly open source — production use in a competing SaaS product is blocked, and the community has responded by forking (OpenTofu equivalent here is Openbao, and there's growing momentum behind alternatives like Cilium for service mesh). Operational complexity is real: you're managing a Raft cluster, Envoy proxy configs, intentions policies, and the gossip layer simultaneously, and debugging why a service isn't reachable often requires understanding all four layers at once. The KV store is convenient but routinely used as a poor man's config management system, which causes pain when teams realize it has no schema, no types, and no access control granularity beyond the token/policy system. Kubernetes integration has improved but still requires the Consul Helm chart and a running Consul server cluster — you can't just drop it in next to an existing Kubernetes CNI without planning.