Self-hosted service
voyagermesh/voyager avatar
voyagermesh/voyager

voyagermesh/voyager: HAProxy ingress for Kubernetes

🚀 Secure L7/L4 (HAProxy) Ingress Controller for Kubernetes

1,352 stars132 forksShellApache-2.0

At a glance

What is it?
Voyager is an Apache-2.0 licensed Kubernetes ingress controller that places HAProxy behind L7 and L4 traffic routing. It targets managed cloud and bare metal clusters, but its README defers installation and detailed configuration to external documentation.
Who is it for?
Kubernetes operators should consider Voyager when they specifically want HAProxy-backed L7 and L4 ingress, sticky sessions, virtual hosting, or cert-manager-managed certificates. Operators seeking only the standard Kubernetes Ingress API, or teams that need a fully self-contained installation guide, should verify compatibility and consult the linked setup documentation before adoption.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 13 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Voyager's HAProxy ingress role

voyagermesh/voyager solves external traffic routing for applications running in Kubernetes. It is designed for operators who need a Kubernetes ingress controller backed by HAProxy rather than a controller built around a different proxy or a different ingress model. The stated scope covers both L7 and L4 load balancing. That makes the project relevant to teams exposing HTTP applications, services that need four-layer handling, or clusters where ingress traffic must be distributed across several backends.

The README identifies support for AWS, GCE, GKE, Azure, ACS, and bare metal Kubernetes clusters. It does not limit the project to a particular hosting provider in its stated deployment model. The intended audience is therefore Kubernetes platform operators and application teams that need a stable ingress endpoint, routing rules, and certificate automation inside the cluster.

Voyager is not presented as a general-purpose application server or a Kubernetes distribution. Its center of gravity is ingress. The project uses a custom Kubernetes `Ingress` resource, which is an important adoption boundary because teams standardized entirely on the standard Kubernetes Ingress resource may need to confirm how their existing manifests translate before committing.

L7 routing, L4 balancing, and virtual hosting

According to the README, Voyager provides L7 and L4 load balancing through HAProxy. Its documented capabilities include high availability, sticky sessions, and name-based or path-based virtual hosting. Those features address several distinct routing needs. Path-based routing can send requests for different URL prefixes to different application services. Name-based virtual hosting can separate applications by hostname. Sticky sessions can help applications that depend on receiving related requests at the same backend.

The project also supports configurable application ports and states that the options available in a standard Kubernetes `Ingress` are supported. The practical architecture is therefore a Kubernetes controller that interprets ingress configuration and places HAProxy in front of application services. The README does not provide a controller process diagram, configuration file, or concrete manifest showing the exact data path between the Kubernetes API and HAProxy.

That omission matters when evaluating behavior. The documentation establishes the routing categories and supported features, but it does not explain load-balancing algorithms, health-check settings, timeouts, rewrite rules, or header manipulation. It also does not say whether standard Ingress annotations, TLS secrets, or cloud-specific annotations have identical behavior across every supported provider. A team with advanced routing requirements should treat those details as items to verify in the linked guides.

Certificate automation through cert-manager

Voyager includes certificate automation rather than requiring every operator to manage TLS material through a separate external process. The README states that Voyager can automatically provision and refresh SSL certificates, including wildcard certificates, issued by Let's Encrypt using `cert-manager`. This connects ingress routing to a certificate lifecycle controller and can remove some manual renewal work.

The project does not claim that this works independently of a cluster installation of `cert-manager`. The wording specifically identifies `cert-manager` as the mechanism used for certificate issuance and refresh, so the expected deployment includes the relevant Kubernetes certificate resources and configuration. The README does not document issuer selection, DNS provider settings, challenge types, storage of the resulting secrets, or behavior when certificate renewal fails.

Wildcard certificate support is worth noting because it can be useful for an ingress controller serving several subdomains. It does not mean that every certificate use case is covered. The README gives no information about internal certificates, private certificate authorities, or organizations that cannot use Let's Encrypt. It also does not describe rollback or recovery after a failed issuance. Those are practical checks for operators considering automatic certificates in production.

Installing Voyager from the documented setup path

The README does not include installation commands, manifests, Helm commands, container image names, Kubernetes version requirements, or configuration snippets. It directs users to the external setup guide for installation and to the welcome guide for initial use. This means the repository page alone is not sufficient to perform a reproducible first deployment from the README alone.

A reader starting from the project should first open the linked installation guide and follow the instructions there for the target cluster and hosting environment. The project is not documented here as requiring a particular container runtime or a specific cloud provider. The README only says that it can be used with the listed cloud providers and with bare metal Kubernetes clusters.

The first real configuration should identify the application `Service`, its application port, the desired host and path routing, and the ingress resource format expected by Voyager. If TLS is required, the operator must also arrange for `cert-manager` and the certificate resources described in the certificate guide. Because the README does not provide a concrete resource example, it would be inaccurate to invent one here. The setup and welcome documentation are the authoritative next sources for commands and manifests.

Compatibility limits and operational boundaries

The clearest limitation is documentation depth. The README describes features but leaves installation, configuration, compatibility, and upgrade details to linked documentation. It does not state supported Kubernetes versions, supported HAProxy versions, minimum node requirements, or upgrade instructions. It also does not describe how to roll back a deployment. Operators should not assume that an older release can be upgraded safely merely because the repository is not archived.

The listed releases are `v2022.08.17`, `v2022.04.13`, and `v2022.03.17`. The most recent listed release is dated 2022-08-17, while the repository's last push was on 2026-10-10. These are repository facts, but they do not establish the compatibility of any particular Kubernetes release or guarantee that a release contains every current documentation change. The release history also leaves uncertainty about upgrade paths between named versions.

The custom `Ingress` resource is another boundary. A cluster that depends on standard Ingress manifests, controller-selection annotations, or a platform ingress implementation may need translation or additional configuration. The README does not document interoperability with other ingress controllers. It is also silent on whether one cluster can run multiple ingress controllers without address or class conflicts.

Apache-2.0 licensing and maintenance signals

Voyager is distributed under the `Apache-2.0` license. The repository includes a `LICENSE` file, and the project description identifies the same license. The README does not provide legal interpretation or describe additional commercial terms. Organizations should review the repository license and any dependencies separately when making a compliance decision; the license identifier alone does not answer every question about a particular deployment.

Maintenance status has two separate signals in the repository record. The repository is not archived, and its last push was on 2026-10-10. That is more recent than the listed release dates, but the README does not explain whether recent commits represent code changes, documentation changes, maintenance work, or release preparation. It would therefore be misleading to infer a release cadence or long-term support commitment from the last push alone.

Upgrade cost appears to include at least two separate activities: reviewing changes between selected Voyager releases and checking the linked setup or migration documentation for Kubernetes and ingress configuration changes. The repository's top-level `docs/` and `hack/` directories indicate that documentation and repository tooling exist, but the README does not define their contents or provide an upgrade procedure. Teams that cannot consult those sources should treat upgrade planning as unresolved.

Choosing Voyager against a standard Ingress setup

A real alternative is to run a Kubernetes ingress implementation centered on the standard Kubernetes `Ingress` API and a separately chosen proxy or controller. The difference is not simply the label. Voyager explicitly uses a custom Kubernetes `Ingress` resource and HAProxy as the proxy foundation, while a standard-resource setup keeps manifests within the Kubernetes API that the cluster operator already supports.

Voyager is the more specific choice when the documented combination of HAProxy, L7 and L4 balancing, sticky sessions, name and path virtual hosting, and `cert-manager`-backed certificates is the intended target. A standard-resource controller may be easier to fit into a cluster whose existing policies, manifests, and operational tooling already assume the standard API. The README does not compare performance, resource consumption, feature completeness, or migration effort, so it cannot support a claim that one approach is faster or cheaper.

The decision therefore comes down to API and proxy requirements, not an advertised universal advantage. Before adopting Voyager, verify that its custom resource can coexist with the cluster's current ingress design. Then check whether the documentation covers the required TLS workflow, cloud environment, and upgrade version.

Editorial conclusion

Kubernetes operators should consider Voyager when they specifically want HAProxy-backed L7 and L4 ingress, sticky sessions, virtual hosting, or cert-manager-managed certificates. Operators seeking only the standard Kubernetes Ingress API, or teams that need a fully self-contained installation guide, should verify compatibility and consult the linked setup documentation before adoption. The first checks are the target cluster, the external ingress configuration, and whether the linked documentation covers the required Kubernetes version and upgrade path.

Frequently asked questions

How do I install voyagermesh/voyager on Kubernetes?

The README directs users to the linked setup guide at voyagermesh.com/docs/latest/setup/. It does not include install commands, manifests, image names, or version requirements.

Does voyagermesh/voyager support TLS certificates?

Yes. The README states that Voyager can automatically provision and refresh SSL certificates, including wildcard certificates, issued from Let's Encrypt using `cert-manager`. It does not document issuer configuration or renewal failure handling.

What routing features does voyagermesh/voyager provide?

The README documents L7 and L4 load balancing through HAProxy, high availability, sticky sessions, and name-based or path-based virtual hosting. It also says configurable application ports and standard Kubernetes Ingress options are supported.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. voyagermesh/voyager on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/voyagermesh-voyager.svg)](https://hysenlabs.com/projects/voyagermesh-voyager)

Was this useful?