{"action":"created","issue":{"url":"https://api.github.com/repos/Mashape/kong/issues/835","repository_url":"https://api.github.com/repos/Mashape/kong","labels_url":"https://api.github.com/repos/Mashape/kong/issues/835/labels{/name}","comments_url":"https://api.github.com/repos/Mashape/kong/issues/835/comments","events_url":"https://api.github.com/repos/Mashape/kong/issues/835/events","html_url":"https://github.com/Mashape/kong/issues/835","id":124892282,"number":835,"title":"Removing third-party dependencies","user":{"login":"thefosk","id":964813,"avatar_url":"https://avatars.githubusercontent.com/u/964813?v=3","gravatar_id":"","url":"https://api.github.com/users/thefosk","html_url":"https://github.com/thefosk","followers_url":"https://api.github.com/users/thefosk/followers","following_url":"https://api.github.com/users/thefosk/following{/other_user}","gists_url":"https://api.github.com/users/thefosk/gists{/gist_id}","starred_url":"https://api.github.com/users/thefosk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thefosk/subscriptions","organizations_url":"https://api.github.com/users/thefosk/orgs","repos_url":"https://api.github.com/users/thefosk/repos","events_url":"https://api.github.com/users/thefosk/events{/privacy}","received_events_url":"https://api.github.com/users/thefosk/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Mashape/kong/labels/task/proposal","name":"task/proposal","color":"bfe5bf"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2016-01-05T04:11:39Z","updated_at":"2016-06-27T04:31:55Z","closed_at":null,"body":"Currently Kong relies on [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) and [Serf](https://serfdom.io/) for the following operations:\r\n\r\n* dnsmasq: to resolve DNS addresses following the rules in both `/etc/hosts` and `resolv.conf` (which nginx doesn't natively support)\r\n* serf: clustering of Kong nodes leveraging its [Gossip Protocol](https://en.wikipedia.org/wiki/Gossip_protocol).\r\n\r\nThis functionalities can be written in pure Lua, thus removing the third-party dependencies and simplifying development and deployment of Kong.\r\n\r\nReplacing dnsmasq is trivial. We would need to parse `/etc/hosts` and `resolv.conf` every `x` seconds and use that resolution to discover the IP address of the upstream server.\r\n\r\nReplacing Serf is a little bit harder, since we would have to build a brand new Lua implementation (I couldn't find any existing library doing this), but having this dependency as a library would fix the current design and all its associated problems. On the bright side of this we wouldn't need to implement all the features that Serf currently implementes, but just the subset that we are using."},"comment":{"url":"https://api.github.com/repos/Mashape/kong/issues/comments/228651981","html_url":"https://github.com/Mashape/kong/issues/835#issuecomment-228651981","issue_url":"https://api.github.com/repos/Mashape/kong/issues/835","id":228651981,"user":{"login":"jayenashar","id":1137152,"avatar_url":"https://avatars.githubusercontent.com/u/1137152?v=3","gravatar_id":"","url":"https://api.github.com/users/jayenashar","html_url":"https://github.com/jayenashar","followers_url":"https://api.github.com/users/jayenashar/followers","following_url":"https://api.github.com/users/jayenashar/following{/other_user}","gists_url":"https://api.github.com/users/jayenashar/gists{/gist_id}","starred_url":"https://api.github.com/users/jayenashar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jayenashar/subscriptions","organizations_url":"https://api.github.com/users/jayenashar/orgs","repos_url":"https://api.github.com/users/jayenashar/repos","events_url":"https://api.github.com/users/jayenashar/events{/privacy}","received_events_url":"https://api.github.com/users/jayenashar/received_events","type":"User","site_admin":false},"created_at":"2016-06-27T04:31:55Z","updated_at":"2016-06-27T04:31:55Z","body":"can i chime in with a possibly stupid question?  why is the default not like nginx?  that is, to resolve  hostnames on start using the local `/etc/hosts` file and `resolv.conf` configuration?\r\n\r\nand another possibly stupid question: why not use inotify to monitor (instead of poll) the local `/etc/hosts` file and `resolv.conf` configuration?"}}
{"actor":{"display_login":"jayenashar"}}