HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
kelseyhightower
confd
Go2014–2017
kelseyhightower / confd

confd

Manage local application configuration files using templates and data from etcd or consul

8Distinct people
11Mentions
0Explicit recommenders
8.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Manage local application configuration files using templates and data from etcd or consul

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year11 dated mentions

Observed mentions: 2014-05-11 15:24:33 UTC to 2017-04-14 10:42:19 UTC.

02462014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC606
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC303
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101

What Hacker News says

11 sources
Doesn't HAProxy provide such functionality? Patroni has REST API which can be used by HAProxy for a health-check. patroni:8008/master will return http status code 200 only if the node running as elected master patroni:8008/replica will return http status code 200 if node running as replica. And final missing bit is a automation of generation of haproxy.cfg - it could be done with confd: https://github.com/kelseyhightower/confd And here is an example of template file: https://github.com/zalando/patroni/blob/master/extras/confd/...
In Patroni: A Template for PostgreSQL HA with ZooKeeper, Etcd, or Consul
I don't think looking for better is the right way to go about this. There are many things that are different in Go which you might find a nice fit for a specific use case. Also, nothing wrong with learning another language to increase the number of tools in your toolbox. I'll list a few use-cases where I found Go to be a great fit for me. Building command line tools: Both Go and Python are great for building command line tools. One place where Go is different is that it's super easy to produce statically linked, self-contained, binaries. The result is less dependancies to manage at install time. Many users find tools distributed in a self-contained binary easier to get started with -- no need to have the right runtime (python 2.x) installed. Example: https://github.com/kelseyhightower/confd Building web services: I'm always building small
Read the rest
services to solve a problem and this is one area where Go really shines for me. Out of the box Go ships with a "high performance" web server. Just import the "net/http" package and off you go. While the built-in web server is not a full replacement for something like Nginx (rate limiting, rewrite rules, etc), it does allow you to go really far without the need of an external web server for performance. Example: https://github.com/kelseyhightower/coreos-ipxe-server There are other benefits to Go like performance gains if you are willing to trade in the flexibility you get from a dynamic language like Python and migrate to a strongly typed language that must be compiled before running your code. While Go is strongly typed it does not get in the way of getting things done. The Go compiler is fast and stays out of the way. I'm not sure what your background is, but I did a talk a few years ago at GopherCon 2014, "Go for Sysadmins" (https://www.youtube.com/watch?v=wyRbHhHFZh8), that provides a nice introduction into why I like Go and some live demos to drive key points home. Hope this helps.
In Ask HN: In what areas is Go better than Python?
> These kind of systems have their own configs, be it elasticsearch.yml or my.cnf. The Dockerfile format is completely fucking useless at this kind of thing. confd is meant to solve this problem [0]. We use it at work to keep our bitcoind server configuration in sync with etcd [1]. Deis (the PaaS) also relies heavily on it, to generate nginx configuration files for example [2]. [0] https://github.com/kelseyhightower/confd [1] https://github.com/olalonde/coreos-bitcoind [2] https://github.com/deis/deis/tree/master/router/rootfs/etc/c...
In Why Always Docker?
CoreOS was CoreOS before I got there. I came to CoreOS because of the open source nature of the company and the awesome collection of projects such as etcd, CoreOS Linux, and their work around containers. The release of Clair proves this will continue without me. While much of my work at CoreOS was seen through the eyes of people attending conferences and readers of my blog entires, my true contribution was helping grow a community around containers, and more importantly exposing the benefits of distributed computing to a much larger audience. Based on feedback, I consider my community efforts largely successful for many reasons including the following: * I've been willing to help anyone learn this stuff by doing 1:1 hangouts, engaging in social media, or writing a book on Kubernetes. Whatever it takes. * Building and sharing open source
Read the rest
projects like confd[1], and my collection of prototypes such as motorboat[2], or exploring new integrations between tools like Docker Compose and Kubernetes[3]. I also spent a fair amount of time hacking on open source projects at CoreOS including rkt, etcd, and working with the community to ensure they could adopt our technologies, then incorporating feedback from users when we (CoreOS) made it hard too. As a result I gained Product Management responsibilities to go along with my advocacy work. During my time at CoreOS Kubernetes came out, which represented a turning point for what I consider the majority of the industry (well the part that cares about application containers). Kubernetes represented many of the ideas we had been working towards at CoreOS, and in many ways was the perfect addition to the CoreOS stack. I was an early code contributor of Kubernetes, which resulted in gaining commit access. But once the number of outside contributors grew, I felt I would have a larger impact building tools to fill in the gaps between Kubernetes and people adopting the platform. One of those tools being kube-register[4], which made it easy for people to automate the scaling out of a Kubernetes cluster using fleet. Overtime I started to shift focus towards education, because what use is a platform for next generation infrastructure if no one knew how to use it? So came the workshops, book, and more conference talks. In many ways I'm doing the exact same things -- working to improve the future of computing based on containers and core concepts of distributed computing, but at a different company, Google, which has many of the same core values regarding open source, community, and vision. What happens to CoreOS? I expect CoreOS to keep shipping stuff based on the same core values that attracted me there in the first place, and regardless of who provides my paycheck I'll always be a member of the CoreOS family. This is the power of community. I never had to leave. [1] https://github.com/kelseyhightower/confd [2] https://github.com/kelseyhightower/motorboat [3] https://github.com/kelseyhightower/compose2kube [4] https://github.com/kelseyhightower/kube-register
In CoreOS Introduces Clair: Open Source Vulnerability Analysis for Your Containers
Take a look at confd, a single statically-linked executable that can expand config file templates using environment variables: https://github.com/kelseyhightower/confd Basically, you add confd into your Docker image and execute it at runtime to do just-in-time config file generation. Here's an example for nginx: https://github.com/grosskur/nginx-confd-dockerfile You can create separate environment variable files for beta/staging/prod and pass --env-file to "docker run". This lets you use the same Docker image across all your environments and avoid the operational complexity of mounting config files in Docker volumes.
In Is Docker ready for production?
Again not to take anything away from consul-template or pyconfd, but confd supports "real-time" updates from both consul and etcd, the watch support was added about 2 weeks ago on the master branch. confd also has dry run support: https://github.com/kelseyhightower/confd/blob/master/docs/no... It was apart of the initial release of confd. These distributed K/V stores are designed to offer a minimal feature set, and the watch support is a perfect way to deliver events to clients. While HTTP call backs would be nice, I think you have to draw the line somewhere. Since these types of systems, consul or etcd, sit at a critical point in the infrastructure lets keep them lean and focused. But that's just my opinion.
In Introducing Consul Template

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.