{"action":"created","issue":{"url":"https://api.github.com/repos/gemini-project/gemini/issues/47","repository_url":"https://api.github.com/repos/gemini-project/gemini","labels_url":"https://api.github.com/repos/gemini-project/gemini/issues/47/labels{/name}","comments_url":"https://api.github.com/repos/gemini-project/gemini/issues/47/comments","events_url":"https://api.github.com/repos/gemini-project/gemini/issues/47/events","html_url":"https://github.com/gemini-project/gemini/issues/47","id":150492101,"number":47,"title":"Add Support for DHCP Relay","user":{"login":"danehans","id":1878195,"avatar_url":"https://avatars.githubusercontent.com/u/1878195?v=3","gravatar_id":"","url":"https://api.github.com/users/danehans","html_url":"https://github.com/danehans","followers_url":"https://api.github.com/users/danehans/followers","following_url":"https://api.github.com/users/danehans/following{/other_user}","gists_url":"https://api.github.com/users/danehans/gists{/gist_id}","starred_url":"https://api.github.com/users/danehans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danehans/subscriptions","organizations_url":"https://api.github.com/users/danehans/orgs","repos_url":"https://api.github.com/users/danehans/repos","events_url":"https://api.github.com/users/danehans/events{/privacy}","received_events_url":"https://api.github.com/users/danehans/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/gemini-project/gemini/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-22T23:13:23Z","updated_at":"2016-04-23T04:27:32Z","closed_at":null,"body":"Gemini should support the following deployment scenario:\r\n\r\n1. gem-master resides in location a\r\n2. cluster nodes reside in location b\r\n\r\nTo accomplish this, a dhcp relay-agent should be deployed in location b. The agent will relay bootp broadcast into a unicast > gem-master in location a\r\n\r\ngem-master will need to support providing dhcp info for multiple subnets (i.e location b, c, d, etc..) using option 82:\r\n\r\nhttp://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_dhcp/configuration/15-sy/dhcp-15-sy-book/dhcp-relay-agent.html\r\nhttp://www.packetpain.com/blog/2014/6/6/dhcp-option-82\r\n\r\n**Note**: The relay-agent should be deployed to a linux server and not a router/switch.\r\n\r\nAnsible should be used to automate the deployment/configuration of the dhcp relay-agent. A dhcp-agent role and host group should be added to provide deployment flexibility. Preferably the relay-agent would run in a container. Therefore, the only deployment requirement for location b, is to have 1 server running Docker version X.\r\n\r\nCluster networks could be allocated similar to how flanneld provisions networks per node:\r\nhttps://github.com/kubernetes/contrib/blob/master/ansible/group_vars/all.yml#L61-L74\r\n\r\nEx>\r\n```\r\n# address space used by all clusters\r\ncluster_subnet_prefix: 172.16.0.0/16\r\n# Size of network to auto allocate per cluster\r\ncluster_prefix: /22\r\n```\r\n\r\nAs a first step, this could be a manual process, where an ENV variable is used to specify the network info on a per cluster basis.\r\n\r\nReferences:\r\nhttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/dhcp-relay-agent.html\r\nhttp://linux.die.net/man/8/dhcrelay\r\nhttps://www.centos.org/docs/5/html/5.1/Deployment_Guide/dhcp-relay-agent.html"},"comment":{"url":"https://api.github.com/repos/gemini-project/gemini/issues/comments/213662694","html_url":"https://github.com/gemini-project/gemini/issues/47#issuecomment-213662694","issue_url":"https://api.github.com/repos/gemini-project/gemini/issues/47","id":213662694,"user":{"login":"danehans","id":1878195,"avatar_url":"https://avatars.githubusercontent.com/u/1878195?v=3","gravatar_id":"","url":"https://api.github.com/users/danehans","html_url":"https://github.com/danehans","followers_url":"https://api.github.com/users/danehans/followers","following_url":"https://api.github.com/users/danehans/following{/other_user}","gists_url":"https://api.github.com/users/danehans/gists{/gist_id}","starred_url":"https://api.github.com/users/danehans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danehans/subscriptions","organizations_url":"https://api.github.com/users/danehans/orgs","repos_url":"https://api.github.com/users/danehans/repos","events_url":"https://api.github.com/users/danehans/events{/privacy}","received_events_url":"https://api.github.com/users/danehans/received_events","type":"User","site_admin":false},"created_at":"2016-04-23T04:27:32Z","updated_at":"2016-04-23T04:27:32Z","body":"/cc: @stephenrlouie @adamschaub @rutsky "}}